c ++,stl,map如何用值排序,而不是键

ash*_*him 4 c++ stl

我想只使用值而不是键来对地图容器中的元素进行排序.怎么做?我知道地图可以按键值排序,但反之亦然.我在stackoverfrlow中发现了同样的问题.我喜欢这个解决方案.但是我想澄清它是什么意思"转储pair<K,V>".我不想为此创造特殊的结构,它不优雅.你是如何实现这个解决方案的

Lal*_*and 19

为了将信息从std :: map转储到std :: vector中,你可以使用带有两个迭代器的std :: vector的构造函数.

std::vector<std::pair<K,V> > myVec(myMap.begin(), myMap.end());
Run Code Online (Sandbox Code Playgroud)

然后,您将使用以下方式对其进

std::sort(myVec.begin(),myVec.end(),&myFunction);
Run Code Online (Sandbox Code Playgroud)

myFunction 将是一个使用签名定义的函数:

bool myFunction(std::pair<K,V> first, std::pair<K,V> second);
Run Code Online (Sandbox Code Playgroud)

如果它们的顺序正确(即首先应该在第二个之前),它会返回true.当它们处于错误的顺序时返回false(即第二个应该在第一个之前).


另外,你可能想看一下boost :: bimap,这似乎更适合你的问题.