重载运算符-operator

先看段代码:

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\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() {
    queue<node>que;
    
    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;
}

 

posted @ 2017-11-02 21:47  楼主好菜啊  阅读(327)  评论(0编辑  收藏  举报