假设有一张地图:typedef map<int, string> MyMap;
我想通过字符串遍历它,例如:
3 -> a
1 -> b
7 -> b
2 -> c
一种方法是按其值对此地图进行排序。但是我担心这会影响find()效率(是真的吗?)
另一种选择是使用boost::bimap
。但是,正如您可能注意到的那样,MyMap中的值并不是唯一的,因此bimap在这里不适用。
有没有好办法呢?
答案 0 :(得分:2)
我找到了一个在boost.bimap中使用多个值的解决方案:multiset_of
数据定义更改为:
#include <boost/bimap/multiset_of.hpp>
typedef boost::bimap<int, boost::bimaps::multiset_of<std::string> > MyMap;
现在我可以通过键或值遍历我的数据。