zoukankan      html  css  js  c++  java
  • STL之erase用法

    vector::erase():从指定容器删除指定位置的元素或某段范围内的元素

    vector::erase()方法有两种重载形式

    如下:

    1、iterator erase(iterator _Where);

    v1.erase( v1.begin( ) );//删除v1中的第一个元素

    vec.erase(vec.begin()+2);删除第3个元素

    2、iterator erase(iterator _First,iterator _Last);

        //删除v1.begin() + 1v1.begin() + 2两个元素

    v1.erase(v1.begin() + 1, v1.begin() + 3);

    vec.erase(vec.begin()+i,vec.begin()+j);删除区间[i,j-1];区间从0开始

    插入元素:vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

    如果是删除指定位置的元素时:
    返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;


    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    using namespace std;
    int main(){
        string str = "abcdefg";
        int num[10] = {1,2,3,4,5,6,7,8,9,0};
        vector<int> res;
        for (auto c: num)
            res.push_back(c);
    
    
        //删除第一个元素
        res.erase(res.begin());
    
        //删除最后一个元素
        res.pop_back();
    
        //删除指定位置元素
        int index = 2;
        res.erase(res.begin()+index);
    
        //删除区间的元素
        res.erase(res.begin()+index, res.begin()+4);
    
        //删除指定值:可以先找到元素位置进行删除,也可以直接删除
        vector<int>::iterator iter = res.begin();
    
        for ( ; iter != res.end();){
            if (*iter == 6){
                res.erase(iter);//删除一个元素时,返回的是一个迭代器,指向删除元素的下一个位置,已经iter++了,所以不需要进行iter++
                cout<<"找到元素, 成功删除";
            }
            else{
                cout<<"未找到指定元素,删除失败";
                iter++;
            }
        }
        iter = res.begin();
        for ( ; iter != res.end(); iter++)
            cout<<*iter<<endl;
    }
  • 相关阅读:
    MySQL 资源大全中文版
    Linux性能实时监测工具 Netdata
    《Linux大棚》博客
    GNU bash实现机制与源代码简析
    C#+ArcGIS Engine 获取地图中选中的要素
    arcgis engine 获取高亮Feature、element
    DotNetBar 源码与安装版本
    ArcGIS 按多边形区域统计栅格影像的一些信息
    ArcGIS 空间查询
    55.npm install 报错 :stack Error: Can't find Python executable "python"
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6397282.html
Copyright © 2011-2022 走看看