C ++ STL容器优先级队列初始化

时间:2014-04-20 14:11:55

标签: c++ stl

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不匹配。那么这个初始化是如何工作的?

1 个答案:

答案 0 :(得分:3)

您只是查看构造函数的引用。

您需要查看的模板参数列表是类模板本身的模板参数列表

template<
    class T,
    class Container = std::vector<T>,
    class Compare = std::less<typename Container::value_type>
> class priority_queue;

您将使用显式给出的所有三个模板参数实例化std::priority_queue,并使用第一个构造函数(不是函数模板 - 第二个构造函数)并使用其两个参数的默认值来实现。