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;
    }
  • 相关阅读:
    placeholder在ie浏览器里不显示的问题解决
    条件注释判断浏览器版本<!--[if lt IE 9]>
    在CSS中,BOX的Padding属性的数值赋予顺序为
    PhpStorm的注册码、Key
    关于【bootstrap modal 模态框弹出瞬间消失的问题】
    python 常见算法
    scrapy 爬虫基础
    python中的小知识点
    python 数据结构简介
    前端插件定制--表头和表内容
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6397282.html
Copyright © 2011-2022 走看看