C++遍历删除vector中的元素
C++遍历删除vector中的元素
成长中的小白 发表于1年前
C++遍历删除vector中的元素
  • 发表于 1年前
  • 阅读 25
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 删除vector的一个元素,指针会自动移动
#include <vector>
#include <algorithm>

int main(int argc,char *argv[])
{
    std::vector<int> v(8);
    for(auto x = v.begin(); x != v.end();)
    {
        for(*x % 2)
        {
            x = v.erase(x);
        }
        else
            ++x;         
    }
}

这样是正确的

下边看个不正确的:

int main(int argc,char *argv[])
{
    std::vector<int> v(8);
    for(auto x = v.begin(); x != v.end();x++)     
    {
        for(*x % 2)
        {
            v.erase(x);            //因为erase后,指针会自动只想被删除的下一个元素,所以,上边再++就会指向下一个的下一个,所以,这儿应该再
            //x--;                //加上这一句就对了
        }
    }
}
共有 人打赏支持
粉丝 0
博文 16
码字总数 7983
×
成长中的小白
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: