C++中的erase()函数用法小结
目录
- string中的erase()
- vector中的erase()
在 C++ 中,erase()
是 std::string
和 std::vector
等容器中的成员函数,用于删除容器中的元素。erase可以删去容器中指定位置的元素,容器的size(大小)会改变,但是容器的容量不变。
常用用法:
1. 删除指定位置的单个元素
str.erase(pos,1)//删除字符串pos位置的单个字符 vec.erase(vec.begin()+pos)//删除vector容器中pos位置的单个字符
2. 删除指定范围内的元素
str.erase(firstpos, n);//字符串,从位置firstpos开始,删除n个字符 vec.erase(vec.begin() + firstpos, vec.begin() + lastpos);//删除指定范围为 [first, last)
注意:在字符串中str.erase(pos)是删除str[pos]及之后所有字符元素,并不是只删除str[pos]。
下面详细描述不同容器中的erase()函数
string中的erase()
1. 删除指定位置的单个字符
2. 删除某个字符(删除第一个出现的字符)
3. 删除指定位置到结尾的所有字符
4. 删除指定范围字符
5. 删除整个字符串字符
示例代码:
#include <IOStream> #include <string> using namespace std; int main() { string str = "Hello, World!"; //1. 删除指定位置的单个字符 str.erase(5, 1);// 删除索引为 5 的字符(即 ',') cout <<"erase(pos,1):"<< str << endl; // 输出:Hello World! //2. 删除第一个出现的字符 'o' string str1 = "Hello, World!"; size_t pos = str.find('o'); if (pos != string::npos) { str1.erase(pos, 1); // 删除找到的字符 } cout <<"erase('o'pos,1):"<< str1 << endl; // 输出:Hell, World! //3. 删除指定位置到结尾的所有字符 string str2 = "Hello, World!"; str2.erase(5); // 从索引 5 开始,删除所有字符 cout <<"erase(pos):"<< str2 << endl; // 输出:Hello //4. 删除指定范围字符 string str3 = "Hello, World!"; str3.erase(0, 5); // 从位置 0 开始,删除 5 个字符 cout <<"erase(pos,n):"<< str3<< endl; // 输出:, World! javascript //5. 删除整个字符串字符 string str4 = "Hello, World!"; str4.erase(0, str4.length());// 删除从第 0 个字符开始的所有字符 cout <<"erase(0, str.length():"<< str4 << endl; // 输出:空字符串 return 0; }
vector中的erase()
在 std::vector
中,erase()
用于删除指定位置的元素或元素范围。
1. 删除单个元素
2.android 删除指定范围的元素
3. 删除所有元素
示例代码:
#include <iostream> #include <string> #include <vector> using namespace std; int main() { //1. 删除指定位置的单个元素 vector<int> vec = {1, 2, 3, 4, 5}; vec.erase(vec.begin() + 2);// 删除位置为 2 的元素(即 3) cout << "erase(vec.begin()+pos):"; for (int val : vec) { cout<<val << " "; // 输出:1 2 4 5 } cout<<endl; //2. 删除指定范围的元素 vector<int> vec1 = {1, 2, 3, 4, 5}; vec1.erase(vphpec1.begin() + 1, vec1.begin() + 4);// 删除索引 1 到 3 范围的元素(即 2, 3, 4) cout << "erase[1,4):"; for (int val : vec1) { cout<<val <&jslt; " "; // 输出:1 5 } cout<<endl; //3. 删除所有元素 vector<int> vec2 = {1, 2, 3, 4, 5}; vec2.erase(vec2.begin(), vec2.end()); cout << "Size of vector: " << vec2.size() << endl; // 输出:Size of vector: 0 return 0; }
注意一种错误用法:不能直接erase要删除的字母,必需先找到它的位置
另外在list中也可以使用erase()函数,用于删除指定位置的元素或元素范围。由于list 是双向链表,删除操作效率较高(不需要移动元素,只需修改指针)。由于使用较少,在这里不做解释。
到此这篇关于C++中的erase()函数用法小结的文章就介绍到这了,更多相关C++ erase()qTRKYmk内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论