Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ STL优先级队列实例化中存在疑问_C++ - Fatal编程技术网

C++ STL优先级队列实例化中存在疑问

C++ STL优先级队列实例化中存在疑问,c++,C++,在我维护的代码库中,我发现以下STLpriority\u队列的实例化。 我不理解pq(订单)部分。在priority\u queue实例化的上下文中,顺序可以是什么 priority_queue<Record*, vector<Record*>, Comparator > pq(order); 优先级队列pq(顺序); 编辑:order是否可以作为Comparator构造函数的参数?事实上,order不是Comparator类型的实例Comparator类有一个构造函

在我维护的代码库中,我发现以下STL
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;