c++ - 仅当我们在优先级队列中使用自定义比较器时才需要传递容器类型?
问题描述
我的朋友在一次采访中被问到:
"当我们使用默认排序创建优先级队列时std::less<T>
,我们可以只写:
std::priority_queue<int> q;
但是当我们使用自定义比较器创建一个时,例如std::greater<T>
,我们必须改为:
std::priority_queue<int, std::vector, std::greater > q2;
std::vector<int>
在您看来,第二种情况需要指定容器类型是什么?而且,为什么只在第二种情况下?"
他只是被要求“猜测”,因为他不确定。当我听到它的那一刻,我意识到我之前曾在 SO 上问过它(问题 2),但没有得到答复。
有人可以澄清原因是什么吗?
注意:从cppreference.com复制的声明。
解决方案
推荐阅读
- ios - Access to the coordinates from an address swift
- python - python从请求中获取url
- c# - 在调用 Start 之前向 ServiceStack 的 ServerEventsClient 注册 displayName
- c# - UWP 中 ComboBox 的 CompositeCollection 的真正替代品?
- html - 存储在 spiffs 上的 chart.js 不起作用(图表未出现在网页上)
- templates - Helm 模板变量为零
- ios - 屏幕转换期间的 UINavigationItem backBarButtonItem 问题
- javascript - console.log 和查询字符串中的值不同
- python - 如何拟合载荷与位移曲线的线性部分?
- vba - Outlook VBA - 如何为收件箱和子文件夹运行脚本