大家都知道
優先隊列是個好東西
但它怎么如同sort一樣
自定義比較方式呢
這里就獻上幾種
重載運算符的方法
First
如果對象是int
STL默認是大根堆
只需要
priority<int> Q
↓↓↓
priority<int,vector<int>,greater<int> > Q
它就能搖身變為小根堆
so easy 過
Secondly
重點是結構體的重載
隆重推出
operator
給出四種方法吧(都是等價的)
struct node{ int x; int y; friend bool operator<(const node a,const node b) { return a.x>b.x; } }; priority_queue<node> Q;
struct node{ int x; int y; bool operator<(const node &a) const { return x>a.x; } }; priority_queue<node> Q;
struct node{ int x; int y; }point; bool operator<(const node &a,const node &b) { return a.x>b.x; } priority_queue<node> Q;
struct node{ int x; int y; }; struct cmp{ bool operator()(node a,node b){ return a.x>b.x; } }; priority_queue<node,vector<node>,cmp> Q;
暫時這樣吧
以后可能還會補充
