先看段代码:
struct node{ friend bool operator< (node n1, node n2){ // 优先取最小的,它与下面的 // 是等价的 return n1.e > n2.e; } //bool operator< (const node &r)const{ // <是重载运算符,不是普通的小于 return s> r.s; //} int s, e; node(int a, int b){ s = a; e = b; }}; //bool operator< (const node& a, const node& b){ // 其也是等价的 // return a.s > b.s; //}int main() { priority_queueque; // 此优先队列实现的是取最小的 que.push(node(1, 10)); que.push(node(5, 50)); que.push(node(2, 20)); while(!que.empty()){ printf("%d\n", que.top().s); que.pop(); } return 0;} 是重载运算符,不是普通的小于>
在结构体中
struct node{ int s, e; node(int _v , int _c ):s(_v),e(_c){} // 这样写是可以进行附初值 // 同理与下面的 // 是等价的 //node(int a, int b){ //s = a; //e = b; //}};int main() { queueque; que.push(node(1, 10)); que.push(node(5, 50)); que.push(node(2, 20)); //while(!que.empty()){ //printf("%d\n", que.top().s); //que.pop(); //} while(!que.empty()){ printf("%d %d\n", que.front().s, que.front().e); que.pop(); } return 0;}