STL对我们说,准备好了priority给我们用♫

 

大根堆 :

priority_queue<int,vector<int>,less<int> >q;
或者简略写成 priority_queue<int>q;

小根堆:

priority_queue<int,vector<int>,greater<int> >q;

 

但是我们不满足,想要另辟蹊径♪

 

如何将自己定义的结构体作为 priority_queue 中的元素?
 
几种实现方法:
 
1.是他是他就是他,我们的好朋友:重载运算符~
//大根堆
struct Node {
int x;
Node(int x = 0) : x(x) {}
bool operator < (const Node &rhs) const {
return x < rhs.x;
}
};
priority_queue<Node, vector<Node>, less<Node> > q;

//小根堆
struct Node {
int x;
Node(int x = 0) : x(x) {}
bool operator > (const Node &rhs) const {
return x > rhs.x;
}
};
priority_queue<Node, vector<Node>, greater<Node> > q;

 

 

2.自己写比较类

//小根堆
struct Node {
int x;
Node(int x = 0) : x(x) {}
 };
struct cmp {
bool operator () (Node a, Node b) {  //可爱的括号运算符
return a.x > b.x;
 }
};
priority_queue<Node, vector<Node>, cmp> q;

 

posted @ 2019-10-03 15:16  QUEKI嶺冬  阅读(147)  评论(0编辑  收藏  举报
/*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ .pln{color:#4d4d4c}ol.linenums{margin-top:0;margin-bottom:0;color:#8e908c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal!important;}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.pun{color:#4d4d4c}.opn{color:#4d4d4c}.clo{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}} /*下面是我设置背景色,字体大小和字体*/ .cnblogs-markdown code{ background:#fff!important; } .cnblogs_code,.cnblogs_code span,.cnblogs-markdown .hljs{ font-size:16px!important; } .syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .syntaxhighlighter table td, .syntaxhighlighter table tr, .syntaxhighlighter table tbody, .syntaxhighlighter table thead, .syntaxhighlighter table caption, .syntaxhighlighter textarea { font-size: 16px!important; } .cnblogs_code, .cnblogs_code span, .cnblogs-markdown .hljs{ font-family:consolas, "Source Code Pro", monaco, monospace !important; } //以上是代码高亮 /* 文字特效 */