我想仅使用值而不是键来对地图容器中的元素进行排序。怎么做?我知道地图可以按键值排序,但反之亦然。我在stackoverfrlow中发现了同样的问题。我喜欢这个solution。但是,我想澄清它是什么意思&#34;转储pair<K,V>
&#34;。我不想为此创造特殊的结构,它不优雅。你如何实现这个solution?
答案 0 :(得分:19)
为了将信息从std :: map转储到std :: vector中,你可以使用带有两个迭代器的std :: vector的构造函数。
std::vector<std::pair<K,V> > myVec(myMap.begin(), myMap.end());
然后您可以使用以下方式对其进行排序:
std::sort(myVec.begin(),myVec.end(),&myFunction);
myFunction
将是使用签名定义的函数:
bool myFunction(std::pair<K,V> first, std::pair<K,V> second);
如果它们的顺序正确(即第一个应该在第二个之前),它会返回true。当它们的顺序错误时返回false(即第二个应该在第一个之前)。
此外,您可能需要查看boost::bimap,这似乎更适合您的问题。