• 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++;
        }
    }

    回去等通知吧。。。

  • 相关阅读:
    依赖注入模式【其他模式】
    缓存模式【其他模式】
    限流模式【其他模式】
    规范模式【其他模式】
    服务定位器【其他模式】
    原型继承模式【其他模式】
    Promise【其他模式】
    单态模式【其他模式】
    Git如何永久删除文件(包括历史记录)
    git中如何查看一个文件的修改(更新)历史
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12584752.html
Copyright © 2020-2023  润新知