我说有一张c ++地图
mp =
[1:2,
2:3,
3:2]
通常,map存储数据,以便键以排序的方式进行。 有什么方法可以存储数据,以便对值进行排序 即 新地图应该是 mp_new =
[2:1,
3:2,
2:3]
答案 0 :(得分:0)
尝试使用
std::unordered_map
来自标题
<unordered_map>
编辑:我知道我的回答并未完全回答您的问题。
尽管这不是一个非常有效的解决方案,但这可以满足您的要求。
//Create new map
std::unordered_map<int, int> map;
map[1] = 2;
map[2] = 3;
map[3] = 1;
//Create vector to sort map
std::vector<std::pair<int,int>> tmp;
for (auto p : map)
{
tmp.push_back(std::make_pair(p.second, p.first));
}
std::sort(tmp.begin(), tmp.end());
map.clear();
for (auto p : tmp)
{
map.insert(std::make_pair(p.second, p.first));
}
//Display new map values
for (auto a : map) std::cout << a.first << ':' << a.second << '\n';
在<unordered_map>
之外,此解决方案还需要以下标头:
<algorithm>
<vector>