C++(STL):09---vector迭代器失效问题
生活随笔
收集整理的這篇文章主要介紹了
C++(STL):09---vector迭代器失效问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在vector中,我們經常會使用迭代器iterator對vector中的元素進行索引,也經常需要將迭代器作為參數傳遞到vector的成員函數中,迭代器使用非常方便,但使用不當也會給我們帶來巨大的麻煩,下面就深入分析vector迭代器失效的場景
push_back導致迭代器失效
Release模式下能正常運行,是因為 迭代器 it指向的內存雖然被釋放了,但是it保存的內存地址依然是有效的, 這時候如果沒有往這個地址對應的內存進行寫操作的話,得到的結果自然是正確的,而C++并不會對這種情況做判斷Debug模式下,會拋異常,是由于VC實現的stl中,對debug模式下的迭代器操作做了更為嚴格的處理,擴容時將迭代器賦值為了nullptr,自然會拋異常。稍后將會詳細講解
int main() {vector<int> ta;ta.push_back(1);ta.push_back(2);vector<int>::iterator it = ta.begin();cout << "it的值是 " << *it << endl;cout << "容量是 " << ta.capacity() << endl;ta.push_back(3);ta.push_back(5); cout << "push_back后容量是 " << ta.capacity() << endl; cout總結
以上是生活随笔為你收集整理的C++(STL):09---vector迭代器失效问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++:37---继承概念、继承种类
- 下一篇: C++(STL):02---tuple容