我如何处理C ++中映射的方式存储数据以按排序方式保留数据

时间:2018-08-11 19:28:47

标签: c++ data-structures

我说有一张c ++地图

mp =  
 [1:2,
  2:3,
  3:2]

通常,map存储数据,以便键以排序的方式进行。 有什么方法可以存储数据,以便对值进行排序 即 新地图应该是 mp_new =

 [2:1,
  3:2,
  2:3]

1 个答案:

答案 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>