C++ STL优先级队列实例化中存在疑问
在我维护的代码库中,我发现以下STLC++ STL优先级队列实例化中存在疑问,c++,C++,在我维护的代码库中,我发现以下STLpriority\u队列的实例化。 我不理解pq(订单)部分。在priority\u queue实例化的上下文中,顺序可以是什么 priority_queue<Record*, vector<Record*>, Comparator > pq(order); 优先级队列pq(顺序); 编辑:order是否可以作为Comparator构造函数的参数?事实上,order不是Comparator类型的实例Comparator类有一个构造函
priority\u队列的实例化。
我不理解pq(订单)
部分。在priority\u queue
实例化的上下文中,顺序可以是什么
priority_queue<Record*, vector<Record*>, Comparator > pq(order);
优先级队列pq(顺序);
编辑:order
是否可以作为Comparator
构造函数的参数?事实上,order不是Comparator类型的实例Comparator
类有一个构造函数,该构造函数接受的参数类型为order
。
但是我看不出它在语法中是如何匹配的。假设这是pq
的变量实例化,类型为priority\u queue
,那么order
是构造函数参数。在这种情况下,它使用的是:
因此,order
将是比较模板参数case的一个现有对象-Comparator
,在您的案例中-用于排序。从外观上看,代码使用了以下优先级队列的构造函数:
explicit priority_queue ( const Compare& x = Compare(), const Container& y = Container());
如果是,则order
是类型Comparator
的实例
如果它是用默认构造函数构造的,那么您可以忽略它并调用
priority_queue<Record*, vector<Record*>, Comparator > pq;
优先级队列pq;
order
是比较器类的一个实例。它定义了优先级队列的比较机制,以确定哪个元素将位于顶部
请查看,.顺序
是名为pq
的优先级队列
实例的构造函数的参数。如果您查看,您将看到order
是实例中使用的Comparator
实例。没有得到它。什么的构造函数?order
可以作为比较器
构造函数的参数吗?事实上,order不是Comparator类型的实例Comparator
类有一个构造函数,该构造函数接受order
类型的参数。是的,假设您的Comparator
-from-typeof-order构造函数是非显式的,这将起作用。在这种情况下,编译器正在从顺序
推断比较器的构造,以便为优先级队列
构造函数生成正确的类型,即它实际上在编译pq(比较器(顺序))
。如果比较器
有一个从顺序
隐式转换构造函数,那么是的。是否有任何参考可以给出这种语法解释?
priority_queue<Record*, vector<Record*>, Comparator > pq;