2013-03-16 2 views
0

У меня есть unordered_map:unordered_map с вектором использования

std::tr1::unordered_map<unsigned int, vector<unsigned int> > duplicates; 

Anad Я хотел бы вставить:

duplicates.insert(make_pair(1, 2)); 
duplicates.insert(make_pair(1, 5)); 
duplicates.insert(make_pair(1, 6)); 

в вектор, потому что они имеют тот же ключ. Я использую цикл for для вставки пар. Как я могу инициализировать вектор, если ни один элемент не имеет один и тот же ключ, и это первый раз, когда я нахожу этот ключ без поиска всего неупорядоченного_мапа?

Я не хочу сначала использовать find (чтобы получить вектор, если он существует), а затем вставить. Это возможно?

ответ

1

Извините, если я неправильно понял ваш вопрос, но, возможно, вы могли бы найти что-то вроде unordered_multimap?

Ненумерованный multimaps являются ассоциативными контейнерами, которые хранят элементы, образованных путем сочетания значения ключа и отображенное значение, так же, как unordered_map контейнеров, но различных элементов, позволяющие иметь эквивалентные ключи.

+0

Hm. Да, это звук как решение. Можете ли вы привести пример того, как я могу перебирать несколько результатов ключа? И если его нормально использовать std :: tr1 :: unordered_map duplicates; как мне больше не понадобится вектор? – glarkou

+0

'std :: tr1 :: unordered_multimap duplicates;' должен работать. Взгляните на [эту страницу] (http://www.cplusplus.com/reference/unordered_map/unordered_multimap/equal_range/) для примера повторения всех значений с помощью одного и того же ключа. –

+0

Спасибо большое! Это должно сработать. – glarkou