поиск симметричного ассоциативного массива по ключу и значению - PullRequest
0 голосов
/ 18 июля 2010

Мне нужно описать ассоциативный массив, в котором для поиска можно использовать ключ и значение.С функциями add, delete, getBy1st (поиск по ключу), getBy2nd (поиск по значению).Например, в C ++:

symmap<std::string, int> m;  
m.insert(make_pair<std::string,int> ("hello", 1));
m.insert(make_pair<std::string,int> ("wow", 2));
...
m.getBy1st("hello"); // returns 1
m.getBy2nd(2);// returns "wow"

Он должен работать для O (log (n)) и хранить в std :: pair.Я не могу решить, что структура данных используется для хранения.Может быть, я могу использовать какой-то вариант rb-дерева для его хранения?

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

Это звучит очень похоже на Boost.Bimap .

1 голос
/ 18 июля 2010

Почему бы не использовать пару хеш-таблиц для хранения данных - одна хэшируется от T1 до T2, а другая - в другом направлении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...