Повысьте бимап с помощью multiset_of - PullRequest
0 голосов
/ 02 июля 2018

У меня вопрос к 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");

ВОПРОС: с bi_map.right.find("value") похоже, что можно получить итератор только до {"message1", "value"}, есть ли возможность получить список совпадений, например [{"message1", "value"}, {"message2", "value"}]?

1 Ответ

0 голосов
/ 02 июля 2018

Ответ equal_range("value"), как с std::multiset и std::multimap.

Этот член возвращает пару итераторов, которые удобно совместимы с фабрикой Boost's iterator-range, поэтому вы можете использовать ее:

for (auto p : boost::make_iterator_range(bi_map.right.equal_range("value")))
        do something with p.second;
...