admin管理员组文章数量:1623784
C++在priority_queue中自定义比较函数
方法一
可调用函数操作符的对象
struct Node{
int val;
};
struct cmp{
bool operator()(const Node &a, const Node &b){
return a.val > b.val;
}
}
priority_queue<Node, vector<Node>, cmp> q;
方法二
重载比较运算符
struct Node{
int val;
/* 重载小于运算符
必须以友元函数的形式
*/
friend bool operator<(const Node &a, const Node &b){
return a.val > b.val;
}
};
priority_queue<Node, vector<Node>> q;
方法三
使用函数指针
struct Node{
int val;
};
bool cmp(const Node &a, const Node &b){
return a.val > b.val;
}
priority_queue<Node, vector<Node>, function<bool(const Node&, const Node&)>> q(cmp);
方法四
使用lambda表达式
struct Node{
int val;
};
auto cmp = [](const Node &a, const Node &b){
return a.val > b.val;
};
priority_queue<Node, vector<Node>, decltype(cmp)> q(cmp);
//或者
priority_queue<Node, vector<Node>, function<bool(const Node&, const Node&)> q(cmp);
本文标签: 自定义函数priorityqueue
版权声明:本文标题:C++在priority_queue中自定义比较函数 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728896703a1178504.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论