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末尾添加一个元素(参数是要插入的值)

如何通过下标删除vector中的指定元素?

例如一个vector的erase实现

如果erase实现如上所述,那么nums.erase删除(it)和it=nums.erase删除(它)在两次操作后继续使用它实际上可以产生相同的效果(如果编译器同意);

实际上nums.erase删除(it)根据标准,后面的迭代器应该是无效的,但是如果继续使用它,在某些编译器下,可能不会报告错误,就像返回一样擦除的值。如果编译器认为没问题,程序就可以运行。

我觉得标准就是标准。如果它违反了标准,它是否可以通过取决于字符。