【发布时间】:2020-11-11 15:04:19
【问题描述】:
所以我可以通过执行以下操作来创建最小堆:
// Creates a min heap
priority_queue <int, vector<int>, greater<int> > pq;
pq.push(5);
pq.push(1);
pq.push(10);
pq.push(30);
pq.push(20);
// One by one extract items from min heap
while (pq.empty() == false)
{
cout << pq.top() << " ";
pq.pop();
}
return 0;
但是如果我的堆是一对整数的元组并且我想按第二个元素排序呢?
例如
priority_queue<tuple<int,int>, vector<tuple<int,int>>> pq;
pq.push(make_tuple(3,2));
pq.push(make_tuple(4,9));
pq.push(make_tuple(1,5));
【问题讨论】:
-
看std::priority_queue上使用lambda的例子
-
比较器是
std::priority_queue的模板参数
标签: c++ priority-queue min-heap