1:自定义比较仿函数优先队列
struct cmp
{
bool operator () (const int a,const int b) const // a优先级小,返回true
{
秋毫不犯return dist[a]>dist[b];
}
};
priority_queue <int,vector<int>,cmp>q; //优先级大的排前边
2:对 sort, stable_sort 传定制比较函数
typedef struct tagNode {
int index;
int value;
} Node;
bool cmp(const Node &a, const Node &b)
儒艮是什么{
return a.value > b.value;
}
手机充电怎么充对电池好int main()
{
Node a[5] = { {1, 11}, {3, 33}, {2, 22}, {5, 55}, {4, 44} };
sort(a, a + 5, cmp);
内丹功法
return 0;
}
3:重载 < 运算符
include <queue>
#include <cstdio>
using namespace std;传统八德
// 重载运算符 让cpp代码的表达力有很大提升,比如map重载[]可以翻遍用[]获取指定key的value
// 还有如果定义了一些矩阵运算什么的,重载 * 就更加方便灵活了
到丽江struct Node
{
int index;
int value;
/* 注意点:这里的 const 不可少编译约束 */
bool operator < (const Node& compNode) const
{
return this->value < compNode.value;
}
};
女生纹理烫发型int main()
{
Node a[5] = { {1, 11}, {3, 33}, {2, 22}, {5, 55}, {4, 44} };
priority_queue<Node> priQue; //Node 类型重载了 < ,变得像 int 等基本数据类型一样可比较了
for(unsigned int i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {
priQue.push(a[i]);
}
while(!pty()) {
const Node& topNode = p();
printf("index is %d, value is %d\n", topNode.index, topNode.value);木瓜雪耳糖水
priQue.pop();
}
return 0;
}