
正文
C++ 自定义结构体的Priority Queue
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
比较函数return true 意味着排序需要交换。
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm> using namespace std; struct Item {
int val = ;
int idx = ;
}; /**
* want ascending order, if ties, prefer less idx
* return true if we want swap happen
*
*/
class Compare {
public:
bool operator() (const Item &lhs, const Item &rhs) {
if (lhs.val == rhs.val) {
return lhs.idx > rhs.idx;
}
return lhs.val < rhs.val;
}
}; int main() {
Item item1;
item1.val = ;
item1.idx = ;
Item item2;
item2.val = ;
item2.idx = ;
vector<Item> v = {item1, item2};
priority_queue<Item, vector<Item>, Compare> myPQ(v.begin(),v.end());
cout << myPQ.top().idx << endl;
std::sort(v.begin(),v.end(), Compare());
cout << v[].val << endl;
return ;
}







