http://www.7klian.com

C++中erase函数的用法和示例_链圈子


Erase函数是一种常用的编程操纵,它可以从一个容器中删除指定位置或范畴的元素,从而淘汰容器的巨细和占用的空间。差异的编程语言和库提供了差异的实现方法和语法,但根基的逻辑和结果是沟通的。本文将先容C++中的erase函数,以及它在vector和string两种容器中的用法和示例。

C++是一种遍及利用的通用编程语言,它支持多种编程范式,如面向工具、泛型、函数式等。C++还提供了一些尺度库,如STL(Standard Template Library),用于实现各类常用的数据布局和算法。个中,vector和string是两种常见的容器范例,别离用于存储动态数组和字符串。

vector和string都支持erase函数,该函数可以从容器中删除指定位置或范畴的元素,从而淘汰容器的巨细和占用的空间。erase函数有以下两种重载形式23:

  • 单个元素:erase (iterator position);该形式可以删除容器中指定位置的一个元素,并返回指向被删除元素后一个元素的迭代器。
  • 范畴:erase (iterator first, iterator last);该形式可以删除容器中指定范畴内的所有元素,并返回指向被删除范畴后一个元素的迭代器。

个中,iterator是一种随时机见迭代器范例,它可以指向容器中的任意元素,并支持算术运算和较量运算。position、first和last都必需是有效的迭代器,而且不能超出容器的范畴。假如position、first或last无效,可能first大于last,则会导致未界说行为。

下面是一些利用erase函数在vector和string中删除元素的示例:

// 删除vector中的元素
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    // 建设一个vector工具,并初始化为1到10
    vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // 删除第6个元素
    v.erase(v.begin() + 5);

    // 删除前3个元素
    v.erase(v.begin(), v.begin() + 3);

    // 输出vector中剩余的元素
    for (int x : v)
        cout << x << " ";
    cout << endl;

    return 0;
}

输出:

4 5 8 9 10 
// 删除string中的字符
#include <iostream>
#include <string>
using namespace std;

int main()
{
    // 建设一个string工具,并初始化为"This is an example sentence."
    string s = "This is an example sentence.";

    // 删除第11个字符到第18个字符(不包罗)
    s.erase(10, 8);

    // 删除第10个字符
    s.erase(s.begin() + 9);

    // 删除第6个字符到倒数第10个字符(不包罗)
    s.erase(s.begin() + 5, s.end() - 9);

    // 输出string中剩余的字符
    cout << s << endl;

    return 0;
}

输出:

This sentence.

总之,erase函数是一种常用的编程操纵,它可以从一个容器中删除指定位置或范畴的元素,从而淘汰容器的巨细和占用的空间。C++中的vector和string都支持erase函数,该函数有两种重载形式,别离用于删除单个元素或范畴内的所有元素。利用erase函数时,需要留意传入有效的迭代器,而且制止未界说行为。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。