• 大根堆:

    1.priority_queue<int> q;【默认

    2. priority_queue< node,vector<node>,less<node> > q;【自带比较函数

  • 小根堆:

    priority_queue< node,vector<node>,greater<node> > q;【自带比较函数

  • 重载运算符:

   1.定义struct node 之后重载

    这是小根堆

1 priority_queue<node>q;//或 priority_queue< node,vector<node>,less<node> >q; 
2 bool operator<(node a,node b)//或写做(const node &a,const, node &b) 更快 
3 {
4     return a.y>b.y;//以y从小到大排序
5 }

   2.在定义struct node时重载

1 struct node
2 {
3     int id,v;
4     bool operator<(const node &a) const{
5         return v<a.v;//以v从大到小排序
6     }
7 };
8 priority_queue<node>q;

   3.定义友元操作类重载函数

1 struct node
2 {
3     int v;
4     friend bool operator<(const node &a,const node &b){
5         return a.v<b.v;  //按v从大到小排列
6     }
7 };
8 priority_queue<node>q;
  • 自定义比较函数模板结构
1 struct cmp
2 {
3     bool operator ()(const node &a, const node &b)
4     {
5         return a.v>b.v;// 按照v从小到大排列
6     }
7 };
8 priority_queue<node,vector<node>,cmp> q;

 

相关文章:

  • 2022-01-10
  • 2022-12-23
  • 2021-05-07
  • 2021-12-02
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-28
猜你喜欢
  • 2022-12-23
  • 2021-11-25
  • 2021-06-12
  • 2021-06-28
  • 2021-07-30
  • 2021-05-31
  • 2021-06-12
相关资源
相似解决方案