【问题标题】:The working of constructor of priority queue优先队列构造函数的作用
【发布时间】:2020-02-03 14:23:21
【问题描述】:

谁能详细说明在插入以下代码的优先级队列之前如何比较对象。还有优先级队列的构造函数中p(comp)的意义是什么.. 代码--

#include<bits/stdc++.h>
using namespace std;

struct trainer
{  int a, int b;  }

bool comp(trainer x,trainer y)
{  return x.a>y.a;  }

int main(void)
{
  priority_queue<trainer, vector<trainer>, function<bool(trainer,trainer)> > p(comp);
  trainer x1,x2,x3;
  x1.a=2;x1.b=3;
  x2.a=9;x2.b=1;
  x3.a=21;x3.b=22;
  p.push(x2);p.push(x1);p.push(x3);
}

【问题讨论】:

  • comp 是用于比较trainer struct 的两个对象的函数

标签: c++ constructor priority-queue c++-standard-library


【解决方案1】:

一个优先队列是有序的。默认情况下,它使用std::less 对元素进行排序,最大的元素位于第一个位置(顶部)。您可以传递不同的比较函数来更改顺序,例如std::greater 在第一个位置有最小的元素。在您的示例中,函数 comp 被传递给优先级队列的构造函数:

p(comp)

每当您插入一个元素时,都会使用comp 以对数时间复杂度将其与其他元素进行比较,并将其放置在正确的位置。

您可以阅读std::priority_queue了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多