2013-03-16 22 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