1

我对 Boost::bimap 有疑问,无法从 boost 文档中找到答案。

using AToBBimap = boost::bimap< boost::bimaps::unordered_set_of<CString>, boost::bimaps::multiset_of<CString> >; //hashed bimap
using AToBBimapValueT = AToBBimap ::value_type;

AToBBimap bi_map;
bi_map.insert(AToBBimapValueT{"message1", "value"});
bi_map.insert(AToBBimapValueT{"message2", "value"});

bi_map.right.find("value");

问题: withbi_map.right.find("value")看起来只能获得迭代器{"message1", "value"},是否有可能获得两个匹配的列表[{"message1", "value"}, {"message2", "value"}]

4

1 回答 1

3

答案是equal_range("value"),就像 withstd::multisetstd::multimap

该成员返回一对迭代器,它方便地与 Boost 的迭代器范围工厂兼容,因此您可以使用它:

for (auto p : boost::make_iterator_range(bi_map.right.equal_range("value")))
        do something with p.second;
于 2018-07-02T13:03:26.373 回答