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函数时,需要留意传入有效的迭代器,而且制止未界说行为。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。