最近看c++primer第四版的標準容器vector,講到對vector容器的插入刪除元素會使得end()的迭代器失效的問題,所以不建議程序員對end()的存儲。
vector<int> vec;
vector<int>::iterator first=vec.begin();
while(first!=vec.end())
{
first=vec.insert(first,12);
first++;
}
上面的這段代碼來自c++primer書中,但是如果我們去運行這樣的程序是不能結束的,會無限循環;
這時我們如果仔細的閱讀上面的這段代碼的話會發現這段代碼的確是無限循環的,因爲insert函數返回的新插入元素的迭代器,這樣的話是永遠不可能等於end()的。
修改方法:
將first++改爲first+=2;
這樣再運行這樣的程序就可以執行了。