如何按值遍历地图

时间:2011-12-09 06:25:58

标签: boost stl map traversal bimap

假设有一张地图:typedef map<int, string> MyMap;

我想通过字符串遍历它,例如:

3 -> a
1 -> b
7 -> b
2 -> c

一种方法是按其值对此地图进行排序。但是我担心这会影响find()效率(是真的吗?)

另一种选择是使用boost::bimap。但是,正如您可能注意到的那样,MyMap中的值并不是唯一的,因此bimap在这里不适用。

有没有好办法呢?

1 个答案:

答案 0 :(得分:2)

我找到了一个在boost.bimap中使用多个值的解决方案:multiset_of

数据定义更改为:

#include <boost/bimap/multiset_of.hpp>
typedef boost::bimap<int, boost::bimaps::multiset_of<std::string> > MyMap;

现在我可以通过键或值遍历我的数据。