C/C++教程

c++ 结构体内置函数不同写法的不同效果

本文主要是介绍c++ 结构体内置函数不同写法的不同效果,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用的测试代码:

#include<bits/stdc++.h>
using namespace std;

struct node {
    int a,b;
    bool operator <  (const node &e) const {
        return b > e.b;
    }
};

int main() {
    priority_queue<node,vector<node>,less<node>>q;
    // priority_queue<node,vector<node>,greater<node>>q;
    for(int i=1;i<=10;i++) {
        q.push({i,i});
    }
    while(q.size()) {
        node op=q.top();
        q.pop();
        cout<<op.b<<' ';
    }
    cout<<endl;
}

在这样的排序结构中,是有两个大于号(小于号)的,依次来说。

1.

  对于这个符号,当优先队列定义为小根堆时,只能使用‘>’号,否则会报错。

  而定义为大根堆时,只能使用‘<'号。

2.

 我们知道,在优先队列中这里的符号与优先队列中存储的方式是相反的。

由此:

1.当优先队列为小根堆时 

   若为’>'号则和小根堆排列方式相同从小到大排序。

  

  相反则从大到小排序。

  

2.当优先队列为大根堆时 

  若为‘<'号则和大根堆排列方式相同从大到小排序。

否则便从小到大排序

 

总结:两个判断符号相同的话与定义的堆排列方式相同,否则相反

这篇关于c++ 结构体内置函数不同写法的不同效果的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!