vector迭代器失效

2021-08-27 16:18:44 字數 622 閱讀 7423

c++面試題經常會背問到vector和list的區別,其中就有乙個問題就困擾我們的,面試官說vector在進行插入和刪除元素的時候迭代器會失效,list不會,那這邊由我來給大家舉個列子:

#include

#include

using

namespace

std;

int main()

#include

#include

using

namespace

std;

int main()

return

0;}

選幾個資料分析一下:

0-1-2-3-4-6-9-13-19-28-42-63-94-141

每次擴容50%

刪除容器中資料的時候,緩衝區大小並不會改變,僅僅只是清楚了其中的資料,只有在析構函式呼叫的時候vector才會自動釋放緩衝區。

int main()

int main()

vector的迭代器失效

大家知道vector容器與陣列的不同之處在於,vector可以自動擴容它的容量,是乙個動態的陣列,而我們的普通陣列的容量時固定死的。當vector內元素的數量等於vector容量的時候,再向vector中插入資料,vector會自動申請一塊兒更大的記憶體空間,並將原來的資料拷貝過去,並存將新的元素插...

vector迭代器失效的處理

1 這裡先給幾個我們經常遇到的問題 vs2012編譯器 include include using namespace std int main for vector iterator it a.begin it a.end it cout 這裡再呈現乙個問題 vectora for int i 0...

vector迭代器失效學習總結

什麼是迭代器失效?我理解的迭代器失效,是指迭代器不能正確指示我們想要操作的物件了,對迭代器進行的操作會產生錯誤的結果。我們舉個栗子來看看迭代器失效是怎麼回事 先定義乙個用來輸出vector物件的函式show vec void show vec vector iterator first,vector...