先看段代码:
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_queue<node>que; // 此优先队列实现的是取最小的 que.push(node(1, 10)); que.push(node(5, 50)); que.push(node(2, 20)); while(!que.empty()){ printf("%d ", 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() { queue<node>que; que.push(node(1, 10)); que.push(node(5, 50)); que.push(node(2, 20)); //while(!que.empty()){ //printf("%d ", que.top().s); //que.pop(); //} while(!que.empty()){ printf("%d %d ", que.front().s, que.front().e); que.pop(); } return 0; }