1. 程式人生 > >在優先佇列中使用結構體的若干小結

在優先佇列中使用結構體的若干小結

以結構體Time為例:

struct Time{
    int start, end;
};
使用優先佇列時,如果需要對Time中的start從小到大排序,有兩種方法:
priority_queue<Time> pq;
一.在結構體外過載結構體小於運算子:
bool operator <(const Time& a,const Time& b){
    return a.start > b.start;
}  //這裡以大於過載小於是因為預設情況下,優先佇列是以大的作為隊首,這樣一反,就可以再預設情況下使得小的作為隊首

二.直接在結構體中過載小於運算子:
struct Time{  
    int start, end;  
    bool operator < (const Time& t)const{  
        return start > t.start;  
    }  
};  

實質上來說是一樣的。。。。

另外要注意的是:引數列表中的const不能省略,否則報錯~~