如何按值遍历地图
假设有一个映射: typedef map
我想通过字符串遍历它,例如:
3 -> a
1 -> b
7 -> b
2 -> c
一种方法是按其值对该地图进行排序。但恐怕这会影响 find() 的效率(这是真的吗?)
另一种选择是使用 boost::bimap
。但是,您可能会注意到,MyMap 中的值不是唯一的,因此 bimap 在这里不适用。
有没有好的办法呢?
Say there is a map: typedef map<int, string> MyMap;
I'd like to traverse it by the string, for example:
3 -> a
1 -> b
7 -> b
2 -> c
One way is to sort this map by its value. But I'm afraid this will have impact to find() efficiency (is it true?)
Another choice is to use boost::bimap
. But, as you might notice, the value in MyMap is not unique, so bimap is not applicable here.
Is there a good way to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了在 boost.bimap 中使用多个值的解决方案:
multiset_of
数据定义更改为:
现在我可以通过键或值遍历我的数据。
I found a solution to use multiple values in boost.bimap:
multiset_of
The data definition changed to:
Now I can traverse my data by either key or value.