如何解决我们如何将元素添加到 map<int,int>... 以便它们在 map 中以非递增顺序存储
如何按非递增顺序对值进行 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。