C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)
Posted MelroseQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)相关的知识,希望对你有一定的参考价值。
C++ 优先队列 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)
定义 初始化一个优先队列
//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;
升序的使用pair的优先队列 默认对pair的第一个元素排序,所以建议数字放pair的第一个,用xx.first引用
//升序的使用pair的优先队列
priority_queue<pair<int, string>,vector<pair<int,string>>,greater<pair<int,string>> > pq;
//升序的使用pair的优先队列
priority_queue<pair<int, string>,vector<pair<int,string>>,less<pair<int,string>> > pq;
对pair结构体自定义排序
struct cmp
template <typename T, typename U>
bool operator()(T const &left, U const &right)
// 以 second 比较。输出结果为 Second 较大的在前 Second 相同时,先进入队列的元素在前。 对pair第二个元素做降序排列 升序就反之
return left.second > right.second;
;
priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> pq;
优先队列的API insert top erase都可以使用 下面介绍auto在其中的使用 只支持C++17以上
假设我们有一个优先队列pq 我们要取队首 使用pq.top() 可以有两种写法
priority_queue<pair<int, string>,vector<pair<int,string>>,greater<pair<int,string>> > pq;
q.insert(make_pair(1,'a'));
q.insert(make_pair(2,'b'));
auto t1=q.top();
cout<<t1.first<<t1.second;//第一种
auto [num,name]=t1.top();//第二种 c++17以上
以上是关于C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)的主要内容,如果未能解决你的问题,请参考以下文章
C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)
C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上)