这 http://www.cplusplus.com/reference/queue/priority_queue/priority_queue/
//initialize (1)
explicit priority_queue (const Compare& comp = Compare(),
const Container& ctnr = Container());
//range (2)
template <class InputIterator>
priority_queue (InputIterator first, InputIterator last,
const Compare& comp = Compare(),
const Container& ctnr = Container());
基于SO上类似问题的答案,我正在使用
priority_queue<int, vector<int>, greater<int> > pq
但是,此定义与参考站点中给出的1或2不匹配。那么这个初始化是如何工作的?
答案 0 :(得分:3)
您只是查看构造函数的引用。
您需要查看的模板参数列表是类模板本身的模板参数列表 :
template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class priority_queue;
您将使用显式给出的所有三个模板参数实例化std::priority_queue
,并使用第一个构造函数(不是函数模板 - 第二个构造函数)并使用其两个参数的默认值来实现。