C ++优先级队列构造函数

时间:2016-12-30 02:31:44

标签: c++ c++11 priority-queue

我发现http://www.cplusplus.com/reference/queue/priority_queue/priority_queue/上的priority_queue构造函数是这样的:

priority_queue (const Compare& comp, const Container& ctnr);

但我发现的例子是这样的:

std::priority_queue<int, std::vector<int>, std::greater<int> > q2;

这两个构造函数之间有什么区别?

我自己尝试了这两种方法,但是第一种方法没有用,优先级也没有从小到大排序。这是代码:

priority_queue<greater<int>, vector<int>> pq;
pq.push(4);
pq.push(2);
pq.push(1);
pq.push(3);
pq.push(5);

for (int i = 0; i < 5; i++) {
    cout << pq.top() << endl;
    pq.pop();  
}

结果仍为5,4,3,2,1

1 个答案:

答案 0 :(得分:2)

  

这两个构造函数之间的区别是什么?

其中一个是构造函数;另一个不是。

typedef开头的行只会创建一个名为mypq_type的类型别名。当您创建此mypq_type类型的对象时,您仍会传递相同的构造函数参数。