Как пройти карту по значению - PullRequest
2 голосов
/ 09 декабря 2011

Скажем, есть карта: typedef map<int, string> MyMap;

Я бы хотел пройти по ней по строке, например:

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

Один из способов - отсортировать эту карту по еезначение.Но я боюсь, что это повлияет на эффективность find () (правда?)

Другой вариант - использовать boost::bimap.Но, как вы могли заметить, значение в MyMap не уникально, поэтому bimap здесь не применим.

Есть ли хороший способ сделать это?

1 Ответ

2 голосов
/ 09 декабря 2011

Я нашел решение использовать несколько значений в boost.bimap: multiset_of

Определение данных изменено на:

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

Теперь я могу просматривать свои данные либо по ключу, либо по значению.

...