vector 容器erase 錯誤用法

2021-10-07 15:42:02 字數 631 閱讀 3036

在用vector刷題時碰到的基本出現錯誤的**如下

int main(void) ;

int len = sizeof(num) / sizeof(num[0]);

nums.assign(num,num+len);

auto iter_slow = nums.begin();

vector::iterator iter = nums.begin() + 1;

//demo

//刪除了第乙個元素後iter_slow 指向了 第二個元素3

//而iter指向了4這個元素

iter_slow = nums.erase(iter_slow);

iter++;

for (auto temp = nums.begin(); temp != nums.end(); temp++)

return 0;

}

程式執行完iter++ 後指接報錯,瞬間崩潰,我沒有找出錯來,問了老師,老師說:"vector容器是基於陣列實現的,你用了erase()方法陣列裡的資料發生移動,你不能把vector容器當鍊表使用."老師這麼一說我秒懂,我自己怎麼會犯如此低階的錯誤.我對容器用的還不夠熟練啊??

list vector map容器erase的區別

一句話總結 list vector返回的迭代器,map返回空 c 98標準 注意迭代器不要越界。map是從模板類繼承來的,不同的c 版本標準其erase函式也不同 c 98 c 11 void erase iterator position iterator erase const iterator...

vector呼叫erase刪除元素

for std vector iterator iter g vecdownloadinfos.begin iter g vecdownloadinfos.end else pop back 只刪除最後乙個元素,而erase可以刪掉乙個由iterator指出的元素,也可刪掉乙個範圍的元素 remov...

vector中erase()的使用

vector erase 從指定容器刪除指定位置的元素或某段範圍內的元素 vector erase 方法有兩種過載形式 如下 iterator erase iterator where iterator erase iterator first,iterator last 如果是刪除指定位置的元素時...