繁体   English   中英

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

[英]c++, stl, map how sort with value, not key

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

为了将信息从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 ,这似乎更适合你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM