容器中clear()和erase()的區別

2021-07-02 04:49:47 字數 1186 閱讀 4356



1、vector::clear()函式的作用是清空容器中的內容,但如果是指標物件的話,並不能清空其內容,必須要像以下方法一樣才能達到清空指標物件的內容:

[cpp]view plain

copy

print?

vector xx;  

for(int it=0;it!=xx.size();++it)  

xx.clear();  

vectorxx;

for(int it=0;it!=xx.size();++it)

xx.clear();

但並不**記憶體,但你可以通過swap()函式來巧妙的達到**記憶體的效果:

[cpp]view plain

copy

print?

xx.clear();  

xx.swap(vector());  

xx.clear();

xx.swap(vector());

2、vector::erase()用於清空容器中的內容以及釋放記憶體,並返回指向刪除元素的下乙個元素的迭代器。

erase:

erasearray:

array引數是要清除的

陣列變數的名稱。

iterator erase( iterator pos );  //

刪除pos指向的字元, 返回指向下乙個字元的

迭代器,

iterator erase( iterator start, iterator end ); //

刪除從start到end的所有字元, 返回乙個

迭代器,指向被刪除的最後乙個字元的下乙個位置

basic_string &erase( 

size_type index = 0, size_type num = npos ); //

刪除從index索引開始的num個字元, 返回*this.

引數index 和 num 有預設值, 這意味著erase()可以這樣呼叫:只帶有index以刪除index後的所有字元,或者不帶有任何引數以刪除所有字元.

原理是向前挪移乙個位置。

STL 序列容器和關聯容器erase的用法

之前在 中使用map erase函式時,誤搬了vector erase的用法,導致server down掉了,好在在測試環境就及時發現了問題,在上線前進行了補救 以下總結一下map erase的正確用法。首先看一下在迴圈中使用vector erase時我習慣的用法 for vector iterat...

關於List容器的erase

之前在程式裡面使用了list容器,其中用到了erase 函式,之前一直沒出現問題,這兩天突然莫名奇妙。花了點時間,搞清楚了erase 函式的機理。常用的刪除容器中元素的方法是如下 方法1 list int list list int iterator iter for iter list.begin...

map容器的erase用法

刪除指定map中指定key的元素 include include include include using namespace std int tmain int argc,tchar argv 執行結果為 ret 1 ret 0 分析 刪除map中指定key的元素會返回刪除元素的數量,如果key...