将无序映射迭代器更改
will unordered_map iterator change?
嗨,我想知道如果无序映射的大小改变,然后重新哈希,迭代器是否会改变?我正试图创建一个迭代器指针结构,将无序映射中的几个元素放在一起。
#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++11 23.2.5/8"无序关联容器":
Rehashing会使迭代器失效,更改元素之间的顺序,以及更改元素出现在哪个bucket中,但不会使指向元素的指针或引用失效。
因此,迭代器在rehash上会无效,但您可以使用对元素的引用。
相关文章:
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 映射迭代器与运算符不匹配
- 使用迭代器替换映射中的常量项的方法
- 映射中循环的迭代器
- std::使用迭代器映射查找距离,程序不会终止
- 创建以向量/列表迭代器为键的映射
- 我可以将映射迭代器与 OpenMP 并行使用吗?
- c++ 在循环中删除迭代器(映射的映射)
- std::map 擦除 - 将迭代器传递给错误的映射
- BAD_ACCES映射 C++ 上的迭代器
- 映射/集迭代器不可取消引用 (C++) - 调试断言失败
- 取消引用映射迭代器时返回对临时的引用
- 来自并发哈希映射的迭代器是否安全
- 为什么映射迭代器显示基本操作数无效错误
- C++有关映射和迭代器的错误
- 复制映射迭代器对值的省略
- ->第一个/第二个到空映射迭代器开始
- 将迭代器映射到特定字段上的迭代器(可以使用 Boost)
- c++如何将迭代器映射的集合作为键
- 有没有一种方法可以将迭代器映射到它的容器