C++STL中的set、map和priority_queue默认优先级(升降序)备忘录

C++ STL的set和map默认按升序排列,可以使用greater<>改为降序。priority_queue默认降序,要改为升序需添加vector<>& greater<>。更改排序依赖于greater<>,对于priority_queue还需vector<>参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set

set<int> s;//默认升序,相当于 set<int,less<int> >。
set<int,less<int> > s; //该容器是按升序方式排列元素。
set<int,greater<int>> s;  //该容器是按降序方式排列元素。

map

map<T1,T2> m;//默认按键的升序方式排列元素,相当于下方的less
map<T1,T2,less<T1> > m; //该容器是按键的升序方式排列元素。
map<T1,T2,greater<T1>> m;  //该容器是按键的降序方式排列元素。

priority_queue

priority_queue<int> p; //默认降序, 大顶堆,队头元素最大
priority_queue<int, vector<int>, less<int> > p; //相当于默认
priority_queue<int, vector<int>, greater<int>> p; //升序,最小值优先级队列,小顶堆

总结

set和map默认升序即从小到大
可通过加一个参数greater<>改变成降序
priorty_queue默认降序即从大到小
需通过加两个参数vector<>, greater<>改变成升序
改变的相同点是都需要greater<>这个参数来改变
不同点在于优先队列还需多一个vector<>参数在前面

简洁顺口溜
set和map从小到大
priorty_queue从大到小
都需要greater<>来改变
优先队列还需vector<>参数在前面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值