簡體   English   中英

將unordered_map迭代器更改?

[英]will unordered_map iterator change?

嗨,我想知道如果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 ++ 11 23.2.5 / 8“無序關聯容器”:

重新散列使迭代器無效,元素之間的順序更改以及桶元素出現的更改,但不會使指針或對元素的引用無效。

因此迭代器在rehash上會失效,但您可以改為引用元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM