在優先佇列中使用結構體的若干小結
阿新 • • 發佈:2019-02-12
以結構體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不能省略,否則報錯~~