stl可能使迭代器失效的操作

2021-06-21 10:50:29 字數 443 閱讀 3583

1、vector、string

插入元素時,若引起空間重配,則迭代器、引用、指標都失效。若未引起空間重配,則插入位置之前的迭代器、引用、指標仍有效,但指向插入位置之後的迭代器、引用、指標將會失效。

刪除元素時,刪除位置之前的迭代器、引用、指標仍有效,但刪除位置之後的迭代器、引用、指標一律無效。

2、deque

插入元素時,若插入到除首尾位置之外的任何位置,都會引起迭代器、引用、指標失效。如果在首尾位置插入元素,則迭代器失效,引用和指標不會失效。

刪除元素時,若刪除的不是首尾元素,則迭代器、引用、指標都會失效。若刪除的是首元素,則除指向首元素的迭代器、引用、指標收到影響,指向其他元素的迭代器、引用、指標仍有效。刪除尾元素也是一樣,只有被刪除的元素受到影響,其他不會受到影響。

3、list,forward_list

插入和刪除元素時,其他迭代器、指標、引用都仍然有效!

STL迭代器失效

vector 1.當插入 push back 乙個元素後,end操作返回的迭代器肯定失效。此時first和end操作返回的迭代器都會失效。3.當進行刪除操作 erase,pop back 後,指向刪除點的迭代器全部失效 指向刪除點後面的元素的迭代器也將全部失效。deque迭代器的失效情況 1.在de...

STL 迭代器失效

迭代器失效 指向不再存在的元素的迭代器。無效迭代器的使用未定義,可能會導致嚴重的執行錯誤。眾所周知當使用乙個容器的insert或者erase函式通過迭代器插入或刪除元素 可能 會導致迭代器失效,因此很多建議都是讓我們獲取insert或者erase返回的迭代器,以便用重新獲取新的有效的迭代器進行正確的...

stl 迭代器失效

1 對於基於連續記憶體的容器,容器元素的增刪,有可能會導致迭代器的失效。考慮 int main int argc,char ar 2 通過memory可以記憶體的變化,刪除之前是 1 2 3 刪除之後是2 3,刪除iter1會導致迭代器iter2和ri失效。迭代器和引用,底層都是指標,刪除iter1...