【发布时间】:2021-02-10 15:00:31
【问题描述】:
如何使std::map<int,int> 以非递增顺序对值进行排序?
map<int,int> mp;
mp[5]=7; // {5->7}
mp[3]=9; // {5->7,3->9}
mp[4]=9; // {5->7,4->9,3->9}
【问题讨论】:
如何使std::map<int,int> 以非递增顺序对值进行排序?
map<int,int> mp;
mp[5]=7; // {5->7}
mp[3]=9; // {5->7,3->9}
mp[4]=9; // {5->7,4->9,3->9}
【问题讨论】:
#include <iostream>
#include <map>
int main()
{
std::map<int, int, std::greater<int>> mp;
mp[5] = 7;
mp[3] = 9;
mp[4] = 9;
for (auto [k, v] : mp)
{
std::cout << "\n" << k << "->" << v;
}
return 0;
}
哪些打印:
5->7
4->9
3->9
我们使用std::greater<int> 而不是默认的std::lesser<int> 请参阅std::map
另外请注意,您还可以使用 reverse_iterator(rbegin()/rend() 方法)对反向顺序进行迭代:
auto iter = mp.rbegin();
const auto iter_end = mp.rend();
while (iter != iter_end)
{
std::cout << "\n" << iter->first << "->" << iter->second;
++iter;
}
将以相反的顺序打印映射(键,值)...
3->9
4->9
5->7
【讨论】: