前面的文章中提到過如何向容器中新增元素,這裡介紹乙個如何刪除容器中元素的函式,包括順序容器和關聯容器。
就是這個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之間的元素
實際上,erase函式是用來操作string的,函式原型如下:
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所指,因為第三種用法返回的就是第二個迭代器所指位置
(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都是迭代器)
第二種第三種就是上面操作容器的方式,第一種用法如下:
注:第乙個引數表示的是下標值!不是第10個!
string
str("this is an example phrase.")
;
str.erase (
10,8);
前面的文章中提到過如何向容器中新增元素,這裡介紹乙個如何刪除容器中元素的函式,包括順序容器和關聯容器。
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方法在...