C++ vector使用實例
vector使用實例代碼演示:
以上代碼中需要注意的點:
在第 8 步中:erase()刪除元素後,返回值是一個迭代器,指向刪除元素的下一個元素;
在第8.1步中:vec.erase(iter);迭代器iter被erase以後,變成了一個「野迭代器」,類似野指針。這時候若直接對其進行++操作,而不是使用iter = vec.begin();重置迭代器iter,會發生未定義的錯誤;
在第8.2步中:代碼if ( *iter == 3 ) iter = vec.erase(iter);執行之後,當前迭代器iter實際已經指向下一個元素,若再執行++操作,實際上是指向了下一個元素的下一個元素;
在第8.3步中:在STL中remove()只是將待刪除元素之後的元素移動到vector的前端,而不是刪除。若要真正移除,需要搭配使用erase()。
在第 9 步中:clear()清除數據後,只是將vector的size置零,可是並不保證將capacity清零。因此clear()並不能釋放vector已經申請的內存。這時候可以使用vector<T>().swap(x)的方式完成釋放內存的操作。swap技法就是通過函數swap(),使得vector離開其自身的作用域,從而強制釋放vector所佔的內存空間;