微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么这个程序有效?擦除后迭代器不会失效

如何解决为什么这个程序有效?擦除后迭代器不会失效

我正在做这个从排序向量中删除重复项并返回向量的新大小的 leetcode 问题,我想出了明显的简单方法删除重复项。但是在我回答这个问题的时候,我发现删除后擦除()使迭代器无效。但是为什么我使用这段代码,它被接受了,我在其他一些在线编译器上运行了一些测试用例,它也在那里工作。 我不明白为什么我可以使用以前初始化的迭代器,即使它应该无效。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size()==0)
        {
            return 0;
        }
       for(auto i=nums.rend()-1;i>nums.rbegin();i--)
       {
           int seclast=*(i-1);
           if(seclast==*i)
           {
               nums.erase(i);
               // i--;
           }
       }
       return nums.size();
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。