C++中的erase()函數(shù)用法小結(jié)
在 C++ 中,erase() 是 std::string 和 std::vector 等容器中的成員函數(shù),用于刪除容器中的元素。erase可以刪去容器中指定位置的元素,容器的size(大?。?huì)改變,但是容器的容量不變。
常用用法:
1. 刪除指定位置的單個(gè)元素
str.erase(pos,1)//刪除字符串pos位置的單個(gè)字符 vec.erase(vec.begin()+pos)//刪除vector容器中pos位置的單個(gè)字符
2. 刪除指定范圍內(nèi)的元素
str.erase(firstpos, n);//字符串,從位置firstpos開始,刪除n個(gè)字符 vec.erase(vec.begin() + firstpos, vec.begin() + lastpos);//刪除指定范圍為 [first, last)
注意:在字符串中str.erase(pos)是刪除str[pos]及之后所有字符元素,并不是只刪除str[pos]。
下面詳細(xì)描述不同容器中的erase()函數(shù)
string中的erase()
1. 刪除指定位置的單個(gè)字符
2. 刪除某個(gè)字符(刪除第一個(gè)出現(xiàn)的字符)
3. 刪除指定位置到結(jié)尾的所有字符
4. 刪除指定范圍字符
5. 刪除整個(gè)字符串字符
示例代碼:
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "Hello, World!";
//1. 刪除指定位置的單個(gè)字符
str.erase(5, 1);// 刪除索引為 5 的字符(即 ',')
cout <<"erase(pos,1):"<< str << endl; // 輸出:Hello World!
//2. 刪除第一個(gè)出現(xiàn)的字符 '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. 刪除指定位置到結(jié)尾的所有字符
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 個(gè)字符
cout <<"erase(pos,n):"<< str3<< endl; // 輸出:, World!
//5. 刪除整個(gè)字符串字符
string str4 = "Hello, World!";
str4.erase(0, str4.length());// 刪除從第 0 個(gè)字符開始的所有字符
cout <<"erase(0, str.length():"<< str4 << endl; // 輸出:空字符串
return 0;
}
vector中的erase()
在 std::vector 中,erase() 用于刪除指定位置的元素或元素范圍。
1. 刪除單個(gè)元素
2. 刪除指定范圍的元素
3. 刪除所有元素
示例代碼:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
//1. 刪除指定位置的單個(gè)元素
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(vec1.begin() + 1, vec1.begin() + 4);// 刪除索引 1 到 3 范圍的元素(即 2, 3, 4)
cout << "erase[1,4):";
for (int val : vec1) {
cout<<val << " "; // 輸出: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;
}
注意一種錯(cuò)誤用法:不能直接erase要?jiǎng)h除的字母,必需先找到它的位置

另外在list中也可以使用erase()函數(shù),用于刪除指定位置的元素或元素范圍。由于list 是雙向鏈表,刪除操作效率較高(不需要移動(dòng)元素,只需修改指針)。由于使用較少,在這里不做解釋。
到此這篇關(guān)于C++中的erase()函數(shù)用法小結(jié)的文章就介紹到這了,更多相關(guān)C++ erase()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言開發(fā)實(shí)現(xiàn)通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言開發(fā)實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C++實(shí)現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(153.尋找旋轉(zhuǎn)有序數(shù)組的最小值),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
基于OpenCV?差分法實(shí)現(xiàn)綠葉識(shí)別
物體識(shí)別是圖像處理學(xué)在現(xiàn)實(shí)生活中較多的應(yīng)用之一,本文提供了一種相對(duì)簡(jiǎn)單的思路來實(shí)現(xiàn)綠葉識(shí)別,適合初學(xué)圖像處理的新人研究參考。感興趣的同學(xué)可以關(guān)注一下2021-11-11
websocket++簡(jiǎn)單使用及實(shí)例分析
下面小編就為大家?guī)硪黄獁ebsocket++簡(jiǎn)單使用及實(shí)例分析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

