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

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

分享到微博請遵守國家法律
廊坊市| 临沧市| 岳池县| 临夏县| 乐业县| 岢岚县| 清河县| 武汉市| 泽普县| 麻栗坡县| 南丹县| 竹山县| 宁波市| 江油市| 北川| 丰镇市| 汤原县| 丰宁| 天祝| 香港| 云和县| 河北区| 顺平县| 武鸣县| 蓬溪县| 巴南区| 舞钢市| 张家口市| 普定县| 韶关市| 开平市| 昌邑市| 宽城| 永和县| 湘乡市| 武乡县| 蛟河市| 平遥县| 南平市| 北海市| 盐源县|