zzyoucan
#include<iostream>
#include <vector>
int main()
{
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(4);
    vec.push_back(5);
    for (auto i = vec.begin(); i != vec.end(); ++i)
    {
        if (*i == 4)
        {
            vec.erase(i);
        }
    }
    getchar();
    return 0;
}

如果你这样试图删除为4的元素则达不到效果,因为erase后vec改变迭代器失效,但erase是返回下一个迭代器的

#include<iostream>
#include <vector>
int main()
{
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(4);
    vec.push_back(5);
    for (auto i = vec.begin(); i != vec.end();)
    {
        if (*i == 4)
        {
            i = vec.erase(i);//返回被删的下一个迭代器,可以利用这个特性
        }
        else
        {
            i++;
        }
    }
    getchar();
    return 0;
}

 

分类:

技术点:

相关文章:

  • 2021-08-20
  • 2021-05-22
  • 2021-08-06
  • 2021-08-06
  • 2021-09-08
  • 2021-08-06
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2021-10-06
  • 2021-08-06
  • 2021-11-30
  • 2021-08-06
  • 2021-08-06
  • 2021-10-12
相关资源
相似解决方案