c++ - 是否可以在 C++ 中使用容器的大小作为 priority_queue 的优先级?
问题描述
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<vector<int>> q;
q.push({1, 2, 3});
q.push({3});
q.push({1, 2});
q.push({0, 1, 2, 3, 4});
while (!q.empty()) {
cout << q.top().size() << endl;
q.pop();
}
}
上面的代码会输出
1
3
2
5
我想得到
1
2
3
5
我四处搜寻,但无法找出正确的方法或不确定是否可行。任何帮助都会很棒,在此先感谢。
解决方案
在构建priority_queue
时,您可以提供自己的比较功能。
请参阅https://en.cppreference.com/w/cpp/container/priority_queue
// Using lambda to compare elements.
auto cmp = [](int left, int right) { return (left ^ 1) < (right ^ 1); };
std::priority_queue<int, std::vector<int>, decltype(cmp)> q3(cmp);
只需根据您的要求更改类型
推荐阅读
- spring-cloud-dataflow - 数据流启动器有效负载 Java
- python - 添加外键后尚未加载 Django 模型
- kubernetes - 入口控制器部署失败
- r - 逐行查找项目数,但有例外
- sap-cloud-platform - 如何将 SAP Cloud Platform TMS 集成到 CI/CD 管道?
- php - 在保存到数据库之前使用 md5 加密密码时出现问题
- flutter - 为什么 Flutter 显示变量初始化错误?
- reactjs - React i18next - 在请求完成之前不显示翻译
- azure - 我可以使用 Azure Even 中心主机名作为应用程序网关的后端吗?
- reactjs - 开玩笑测试 React 类组件