C++优先级队列构造器
C++ priority queue constructor
我在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没有从小到大排序。这是代码:
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
What's the difference between these two constructors?
其中一个是构造函数;另一个不是。
以 typedef
开头的行只是创建了一个类型别名,称为 mypq_type
。当您创建此 mypq_type
类型的对象时,您仍然会传递相同的构造函数参数。
我在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没有从小到大排序。这是代码:
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
What's the difference between these two constructors?
其中一个是构造函数;另一个不是。
以 typedef
开头的行只是创建了一个类型别名,称为 mypq_type
。当您创建此 mypq_type
类型的对象时,您仍然会传递相同的构造函数参数。