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

时间:2011-12-27 03:32:25

标签: c++ stl

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

1 个答案:

答案 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,这似乎更适合您的问题。

相关问题