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函数时,需要注意传入有效的迭代器,并且避免未定义行为。

本文链接地址:https://www.wwsww.cn/jishu/21841.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。