2013-03-16 42 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循環來插入對。如果沒有項目共享相同的密鑰,我如何初始化矢量,並且這是我第一次在沒有搜索整個unordered_map的情況下找到該密鑰?

我不想首先使用find(獲取vector,如果存在)然後插入。那可能嗎?

回答

1

對不起,如果我誤解了你的問題,但也許你可能會發現在使用unordered_multimap之類的東西?

無序屈德寧是存儲由密鑰值和映射的值的組合形成的元素關聯容器,很像unordered_map容器,但允許不同的元素來具有等價密鑰

+0

嗯。是的,這聽起來是一種解決方案你能舉一個例子說明如何迭代一個鍵的多個結果?如果它可以使用std :: tr1 :: unordered_map duplicateates;因爲我不再需要該載體了? – glarkou 2013-03-16 00:51:45

+0

'std :: tr1 :: unordered_multimap duplicateates;'應該可以工作。請查看[本頁](http://www.cplusplus.com/reference/unordered_map/unordered_multimap/equal_range/),查看使用同一個鍵遍歷所有值的示例。 – 2013-03-16 00:54:37

+0

非常感謝!這應該工作。 – glarkou 2013-03-16 00:56:41