C/C++编程技巧

C++:vector erase删除符合条件的元素

2020-04-19  本文已影响0人  AI秘籍

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。
C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换。

1. std::vector::erase()

iterator erase (iterator position);  //删除指定元素
iterator erase (iterator first, iterator last); //删除指定范围内的元素
返回值:指向删除元素(或范围)的下一个元素。

2.实例

#include<iostream>
#include<string>
#include<vector>
 
using namespace std;
 
int out(vector<int> &iVec)
{
    for (int i = 0; i < iVec.size(); i++)
        cout << iVec[i] << ends;
    cout << endl;
    return 0;
}
 
int main()
{
    vector<int> iVec;
    int i;
    for (i = 0; i < 10; i++)
        iVec.push_back(i);
 
    cout << "The Num(old):"; out(iVec);
 
    vector<int>::iterator it;//定义迭代器
    for (it = iVec.begin(); it != iVec.end();)
    {
        if (*it % 3 == 0)
            it = iVec.erase(it);    //删除元素,返回值指向已删除元素的下一个位置    
        else
            ++it;    //指向下一个位置
    }
    cout << "The Num(new):"; out(iVec);
    return 0;
}
image.png

参考:

  1. https://blog.csdn.net/sss_369/article/details/87927049
上一篇下一篇

猜你喜欢

热点阅读