vector删除连续的元素

这个是在一次面试时候问的,删除vector中的一个指定元素

// 刚开始是这样的,删除vector中的一个等于target的元素,

我一想不就是这个,多简单,上手就是写个这。结果,我艹直接死循环(一脸尴尬,多么简单的题)。
然后调了一会,没调出来(我是忽略了erase的返回值了,erase返回删除当前元素的下一个节点的迭代器,但是我有让他it++了,所以就错了)
(然后面试官说,先不看这个了,先问问其他的,等会再写)
void fun(vector<int> &vec, int target)
{
    for(auto it = vec.begin(); it != vec.end(); it++)
    {
        if(*it == target)
        {
            it = vec.erase(it);
        } 
    }
}


int main()
{
    vector<int>vec = {2,4,62,2,33,33,33};
    fun(vec, 33);
    for(int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << " ";
    }

    return 0;
}

。。。。。 接着开始写一些链表的题目。。。。。

最后面试官说,你在想想erase,或者vector删除一个元素后的返回值。

我就说,我在写一遍试试,改改。

突然想起了,我艹。让它自增了,不该上来就把for循环的it++写上

一个continue就行了,主要是细节东西没注意,

void fun(vector<int> &vec, int target)
{
    for(auto it = vec.begin(); it != vec.end(); )
    {
        if(*it == target)
        {
            it = vec.erase(it);
            continue;
        }
        it++;
    }
}

回去等通知吧。。。

原文地址:https://www.cnblogs.com/xiaokang01/p/12584752.html