最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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迭代器失效總結的評論 (共 條)

分享到微博請遵守國家法律
开化县| 黄山市| 思茅市| 青田县| 开化县| 岳普湖县| 京山县| 张家港市| 乐业县| 栾川县| 磐安县| 布拖县| 怀来县| 社会| 方正县| 孙吴县| 鹿泉市| 小金县| 金秀| 文水县| 连州市| 昌平区| 佳木斯市| 石屏县| 苗栗市| 奇台县| 湘潭县| 江川县| 朝阳县| 永修县| 厦门市| 虹口区| 新化县| 合肥市| 盘山县| 土默特左旗| 崇左市| 花垣县| 怀远县| 太白县| 南陵县|