1、自定义优先队列内部的排序规则priority_queue
auto cmp = [](ListNode* a, ListNode* b){
return a->val > b->val; // 降序排序,小顶堆
}
priority_queue<ListNode*, vector<ListNode*>, decltype(cmp)> pq(cmp);
或者重新定义一个结构体(即类)
struct Status{
int val;
ListNode* ptr;
**bool operator < (const Status& rhs) const {
return val > rhs.val;
}**
};
priority_queue<Status> q;
q.push(root->val, root);
2、自定义set集合内部的排序规则
struct Node {
int m_Cnt;
int m_Time;
int m_Key;
int m_Value;
Node (int cnt, int time, int key, int value) : m_Cnt(cnt), m_Time(time), m_Key(key), m_Value(value){
}
**bool operator < (const Node& n) const{
return m_Cnt == n.m_Cnt ? m_Time < n.m_Time : m_Cnt < n.m_Cnt;
}**
};
set<Node> vis;