在STL priority_queue实例化中存在疑问

时间:2011-02-16 16:30:07

标签: c++

在我维护的代码库中,我找到了STL priority_queue的以下实例。 我不理解pq(order)部分。在order实例化的上下文中,priority_queue可能是什么?

priority_queue<Record*, vector<Record*>, Comparator > pq(order);

编辑:order可以成为Comparator构造函数的参数吗?实际上,order不是Comparator类型的实例。 Comparator类有一个构造函数,它接受order类型的参数。 但是我不知道它在语法中的适用性。

4 个答案:

答案 0 :(得分:2)

假设pq的变量实例化类型为priority_queue<Record*, vector<Record*>, Comparator >,则order是构造函数参数。在这种情况下,它使用explicit constructor

 explicit priority_queue ( const Compare& x = Compare(),
                           const Container& y = Container() );

所以order将是Compare模板参数案例的现有对象 - 在您的情况下为Comparator - 用于排序。

答案 1 :(得分:2)

从它的外观来看,代码使用了priority_queue的以下构造函数:

explicit priority_queue ( const Compare& x = Compare(), const Container& y = Container());

如果是,那么orderComparator类型的实例。

如果它是使用默认构造函数构造的,那么您可以将其保留并调用

priority_queue<Record*, vector<Record*>, Comparator > pq;

答案 2 :(得分:1)

orderComparator类的一个实例。它定义了优先级队列的比较机制,以确定哪个元素位于顶部。

查看std::priority_queue referenceconstructor signature in particular

答案 3 :(得分:1)

order是名为priority_queue<Record*, vector<Record*>, Comparator>的{​​{1}}实例的构造函数的参数。如果您查看documentation for the constructor,您会看到pq是实例中使用的order实例。