在用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 如果是刪除指定位置的元素時...