我只想使用值而不是键对 map 容器中的元素进行排序。怎么做?我知道 map 可以按键值排序,但反之亦然。我在 stackoverfrlow 中发现了同样的问题。我喜欢这个solution .但是我想澄清一下“转储到pair<K,V>
”是什么意思。我不想为此创建特殊的结构,它不优雅。你如何实现这个 solution ?
最佳答案
为了将信息从 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 ,这似乎更适合您的问题。
关于C++,STL,映射如何用值而不是键排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640904/