C++ 具有自定义比较函数的优先级队列在 push() 上行为不正确
C++ Priority Queue with Custom Compare Function not Behaving Correctly on Push()
我定义了一个C++优先级队列,如下所示:
priority_queue<pair<int,int>, vector<pair<int,int>>, decltype(&mygreater)> frontier(&mygreater);
使用像这样的自定义 myGreater 函数():
bool mygreater(pair<int,int> v1, pair<int,int> v2) {
return v1.first > v2.first;
}
但是,当我尝试将整数对的向量推送到优先级队列时,我不断收到大量错误,包括:
error: no matching function for call to ‘std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int> >, bool (*)(std::pair<int, int>, std::pair<int, int>)>::push(std::vector<std::pair<int, int> >&)’ frontier.push(temp);
有谁知道是什么导致了我尝试推送到优先级队列时出现的错误?任何帮助将不胜感激。
此错误与您的自定义比较无关。如果这样做,您会收到相同的错误:
std::priority_queue<int> q;
std::vector<int> v;
q.push(v);
std::priority_queue::push
采用您存储的任何类型的单个对象,而不是它们的整个向量。您存储的类型是 pair<int,int>
,但您正在尝试推送vector<pair<int,int>>
。
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- C++ 具有自定义比较函数的优先级队列在 push() 上行为不正确