C 函式的用法 erase函式

2021-09-17 19:01:41 字數 1528 閱讀 7441

前面的文章中提到過如何向容器中新增元素,這裡介紹乙個如何刪除容器中元素的函式,包括順序容器和關聯容器。

就是這個erase函式,基本用法如下:

c.erase(p)------------------------------從c中刪除迭代器p指定的元素,p必須指向c中的乙個真實元素,不能等於c.end()

c.erase(b,e)----------------------------從c中刪除迭代器對b和e所表示的範圍中的元素,返回e

具體用法如下:

vector

<

string> e = ;

e.erase(

"c");

//刪除字串「c」

auto it = e.end()

-1;

//.end()指向末尾的後乙個元素,因此需要-1,指向末尾元素

e.erase(it);

//刪除末尾元素「e」

auto it2 = e.begin()+

1;auto it3 = e.end()

-2;e.erase(it2,it3);

//刪除it2到it3之間的元素

對於第二種用法,可以拓展一下:

auto it = a.begin();

auto it2 = a.find(

"c");

//it2指向「c」所在位置

auto it3 = a.erase(it,it2);

//刪除it到it2之間的所有元素,即「a」和「b」

a.erase(it3);

//此時刪除的是「c」,即先前it2所指,因為第三種用法返回的就是第二個迭代器所指位置

實際上,erase函式是用來操作string的,函式原型如下:

(1)string& erase ( size_t pos = 0, size_t n = npos );刪除從pos開始的n個字元,比如erase(0,1)就是刪除第乙個字元

(2)iterator erase ( iterator position );刪除position處的乙個字元(position是個string型別的迭代器)

(3)iterator erase ( iterator first, iterator last );刪除從first到last之間的字元(first和last都是迭代器)

第二種第三種就是上面操作容器的方式,第一種用法如下:

string

str("this is an example phrase.")

;

str.erase (

10,8);

注:第乙個引數表示的是下標值!不是第10個!

前面的文章中提到過如何向容器中新增元素,這裡介紹乙個如何刪除容器中元素的函式,包括順序容器和關聯容器。

C 中erase函式的用法

erase函式是乙個刪除容器中元素的函式,包括順序容器和關聯容器。基本用法如下 container.erase p 從container中刪除迭代器p指定的元素,p必須指向c中的乙個真實元素,不能等於container.end container.erase b,d 從container中刪除迭代器...

map中的erase成員函式用法

於 一 include include include using namespace std int main void 正確的寫法 for itor m.begin itor m.end else 另乙個正確的寫法,利用erase的返回值,注意,有些版本的stl map沒有返回值,比如sgi版,...

C unique 函式和erase 函式

unique 是c 語言中的stl函式,包含於標頭檔案中。功能是將陣列中相鄰的重複元素去除。然而其本質是將重複的元素移動到陣列的末尾,最後再將迭代器末尾指向最後不重複的下標。返回的是乙個指向最後不重複元素的迭代器。因為是去除相鄰的重複元素,所以要用sort先對陣列進行排序才行。語法 erase方法在...