在我维护的代码库中,我找到了STL priority_queue
的以下实例。
我不理解pq(order)
部分。在order
实例化的上下文中,priority_queue
可能是什么?
priority_queue<Record*, vector<Record*>, Comparator > pq(order);
编辑:order
可以成为Comparator
构造函数的参数吗?实际上,order不是Comparator
类型的实例。 Comparator
类有一个构造函数,它接受order
类型的参数。
但是我不知道它在语法中的适用性。
答案 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());
如果是,那么order
是Comparator
类型的实例。
如果它是使用默认构造函数构造的,那么您可以将其保留并调用
priority_queue<Record*, vector<Record*>, Comparator > pq;
答案 2 :(得分:1)
order
是Comparator
类的一个实例。它定义了优先级队列的比较机制,以确定哪个元素位于顶部。
查看std::priority_queue
reference和constructor signature in particular。
答案 3 :(得分:1)
order
是名为priority_queue<Record*, vector<Record*>, Comparator>
的{{1}}实例的构造函数的参数。如果您查看documentation for the constructor,您会看到pq
是实例中使用的order
实例。