list迭代器遍歷刪除 使用迭代器遍歷集合時,刪除元素為何不能用集合定義的remove()方法?
使用迭代器遍歷集合時,刪除元素為何不能用集合定義的remove()方法?在STL中,remove()只是將要刪除的元素后面的元素移動到向量的前端,而不是將其刪除。要實際刪除它,請使用erase()。問
使用迭代器遍歷集合時,刪除元素為何不能用集合定義的remove()方法?
在STL中,remove()只是將要刪除的元素后面的元素移動到向量的前端,而不是將其刪除。
要實際刪除它,請使用erase()。
問題:如何使用iterator刪除vector容器中的元素?
Clear()Clear all elements empty()判斷vector是否為空(返回true時為null)erase()刪除指定的元素(可以使用指針代替迭代器)iterator erase(iterator LOC)//要刪除的元素的iterator erase(iterator start,iterator end)//要刪除的第一個元素的迭代器要刪除的第二個元素的iterator insert(),將該元素插入vector,iterator insert(iterator LOC,const type&val)//在指定位置LOC之前插入一個Val元素,并返回指向該元素的iterator void insert(iterator LOC,size) type num,const type&val)//在指定位置LOC之前插入具有Val值的num個元素,void insert(iterator LOC,input) iterator start,input iterator end)//插入間隔[start,end]Pop在指定位置LOC_u2;Back()刪除最后一個元素之前push_2;Back()在vector末尾添加一個元素(參數(shù)是要插入的值)
如何通過下標刪除vector中的指定元素?
例如一個vector的erase實現(xiàn)
如果erase實現(xiàn)如上所述,那么nums.erase刪除(it)和it=nums.erase刪除(它)在兩次操作后繼續(xù)使用它實際上可以產生相同的效果(如果編譯器同意);
實際上nums.erase刪除(it)根據(jù)標準,后面的迭代器應該是無效的,但是如果繼續(xù)使用它,在某些編譯器下,可能不會報告錯誤,就像返回一樣擦除的值。如果編譯器認為沒問題,程序就可以運行。
我覺得標準就是標準。如果它違反了標準,它是否可以通過取決于字符。