admin管理员组文章数量:1623784
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以上
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以上
本文标签: 结构化队列绑定pairpriorityqueue
版权声明:本文标题:C++ 优先队列 堆 priority_queue的使用 以及内部使用结构化pair的排序的用法 auto在其中的用法(结构化绑定 C++17以上) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728897177a1178562.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论