【发布时间】:2017-05-26 02:26:49
【问题描述】:
我创建了一个 priority_queue 并定义了一个自定义比较器(一个结构),它在构造函数中采用一个 2D 向量。它编译并成功运行到声明该优先级队列的地步。但是,如果我尝试将元素添加到优先级队列中,则会弹出错误:
错误:在 'minHeap' 中请求成员 'push',它是非类类型 'std::priority_queue, std::vector >, MyComparator>(MyComparator)' minHeap.push(make_pair(0, 1));
我想知道是什么问题?
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct MyComparator{
vector<vector<int>> array2D;
MyComparator(const vector<vector<int>>& arrays){
array2D = arrays;
}
bool operator()(const pair<int, int> &p1, const pair<int, int> &p2){
return array2D[p1.second][p1.first] > array2D[p2.second][p2.first];
}
};
int main() {
vector<vector<int>> arrays = {{1, 3, 5, 7}, {2, 4, 6},{0, 8, 9, 10, 11}};
priority_queue<pair<int, int>, vector<pair<int, int>>, MyComparator> minHeap(MyComparator(arrays));
//运行良好,上面没有错误
minHeap.push(make_pair(0, 1)); //pop me error
return 0;
}
【问题讨论】:
标签: c++