国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
邢台县| 邯郸市| 云安县| 丰镇市| 佳木斯市| 邳州市| 利辛县| 常宁市| 都匀市| 辽阳市| 阿荣旗| 乌鲁木齐市| 汉阴县| 齐河县| 尉犁县| 台南市| 井陉县| 永城市| 浪卡子县| 邹城市| 霸州市| 乐安县| 嵩明县| 广昌县| 上思县| 多伦县| 高要市| 鲁山县| 阜新市| 云霄县| 东乡族自治县| 灵台县| 上栗县| 区。| 闸北区| 丹寨县| 彭泽县| 贵定县| 阿坝县| 大丰市| 垦利县|