【发布时间】:2013-06-21 18:12:21
【问题描述】:
您好,我想知道如果 unordered_map 的大小发生变化然后重新散列,迭代器是否会发生变化?我正在尝试创建一个迭代器指针结构,以将 unordered_map 中的多个元素组合在一起。
#include<string>
#include<tr1/unordered_map>
struct linker
{
unordered_map<Key,T>::iterator it;
unordered_map<Key,T>::iterator it1;
unordered_map<Key,T>::iterator it2;
};
unordered_map<string,int> map({{"aaa",1},{"bbb",2},{"ccc",3},{"ddd",4}});
linker node1 = new linker;
node1.it = map.find("aaa");
node1.it1 = &map.find("ccc");
node1.it2 = &map.find("ddd");
map.insert(make_pair({"sss",23}));
.....
插入太多元素后,迭代器指针是否仍然可用并在映射大小更改之前指向相同的元素/键?
【问题讨论】:
-
我相信如果您的插入导致重新散列,所有迭代器都将失效。
-
所以我应该创建一个结构来存储字符串的键?
标签: c++ iterator unordered-map