我想仅使用值而不是键对地图容器中的元素进行排序。怎么做?我知道地图可以按键值排序,但反之亦然怎么办。我在 stackoverflow 中发现了同样的问题。我喜欢这个solution https://stackoverflow.com/a/2699101/1082727。不过我想澄清一下“转储”是什么意思pair<K,V>
“。我不想为此创建特殊的结构,它不优雅。你如何实现这个solution https://stackoverflow.com/a/2699101/1082727?
为了将 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(即第二个应该在第一个之前)。
另外,您可能想看看升压::双图 http://www.boost.org/doc/libs/1_48_0/libs/bimap/doc/html/index.html,这似乎更适合您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)