五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++STL迭代器失效總結

2023-03-05 22:06 作者:Uniblademaster  | 我要投稿

看了很多中英文的相關介紹,發(fā)現(xiàn)迭代器失效這一章很多講得都不夠清晰,這里重新梳理一下,希望能對大家有所幫助。

目標讀者:最好了解容器底層原理,至少會調用各容器的接口
這里我選擇按照容器分類:

vector

  1. reserve: 如果參數(shù)大于原容量,所有迭代器,引用,指針失效,如果小于則不會有任何影響。

  2. 插入型函數(shù)(包括但不限于insert):
    分兩種情況

  • 如果引起內存重新分配,則所有迭代器,引用,指針失效

  • 如果沒有引起內存重新分配,則插入位置之前的所有迭代器,引用,指針不變,之后的所有迭代器,引用,指針失效。

  1. 刪除型函數(shù)(包括但不限于erase,但是不包括clear):同2

  2. clear: 所有迭代器,引用,指針失效。

list

  1. clear: 所有迭代器,引用,指針失效。

  2. 其余更易型操作: 僅操作的對象的迭代器,引用,指針失效。

forward_list

  1. clear: 所有迭代器,引用,指針失效。

  2. 其余刪除型操作:僅操作的對象的迭代器,引用,指針失效。

deque

deque比較特別,因此用了斜體

  1. clear: 所有迭代器,引用,指針失效。

  2. 插入型函數(shù)(包括但不限于insert):
    分兩種情況

  • 如果插入在deque的開頭或結尾,所有迭代器和指針失效,而引用不受影響。

  • 如果插入在deque的中間,則所有迭代器,指針和引用都失效。

  1. 刪除型函數(shù)(包括但不限于erase,但是不包括clear):
    分3種情況

  • 如果刪除了末尾元素,則被刪除元素的迭代器,指針和引用都失效,并且尾后(past-the-end)迭代器失效。

  • 如果刪除了首元素,則僅被刪除元素的迭代器,指針和應用都失效,但尾后迭代器不受影響。

  • 如果僅刪除了首尾元素之外的元素,則僅被刪除元素的迭代器,指針和引用失效,但尾后迭代器不受影響。

關聯(lián)容器(有序)

clear及其它刪除型操作都僅使被刪除元素的迭代器,指針和引用失效。

無需關聯(lián)容器

分三種情況

  • clear及其它刪除型操作都僅使被刪除元素的迭代器,指針和引用失效。

  • 插入型函數(shù)(包括但不限于insert): 首先不會改變指針和引用。只有當“優(yōu)先于操作元素的元素數(shù)量+插入的操作元素的元素數(shù)量<桶的數(shù)量*裝填因子”時才會使迭代器失效

  • rehash, reserve: 僅使所有迭代器失效,但不改變指針和引用。

valarray

resize: 使所有迭代器,指針和引用失效。


C++STL迭代器失效總結的評論 (共 條)

分享到微博請遵守國家法律
海门市| 义马市| 云龙县| 科技| 专栏| 布尔津县| 温泉县| 巍山| 金秀| 勐海县| 潮州市| 固始县| 乐陵市| 南通市| 华宁县| 柘城县| 叶城县| 双桥区| 日照市| 苏尼特左旗| 台东市| 叙永县| 永康市| 济南市| 开封市| 南和县| 双桥区| 铜川市| 龙岩市| 武宁县| 通州市| 怀远县| 辽宁省| 铁岭市| 巴南区| 古蔺县| 大埔县| 奎屯市| 富源县| 元氏县| 杨浦区|