優先隊列的重載運算符


大家都知道

優先隊列是個好東西

但它怎么如同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;

 

 

 

暫時這樣吧

以后可能還會補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM