正確使用stl map的erase方法

2021-09-25 07:55:59 字數 946 閱讀 5746

先宣告:下面的文章是針對windows的用法,因為std::map的erase函式的windows的實現版本是返回乙個std::map的迭代器,但是stl標準裡面的該函式的返回值確是:

map.erase有3個過載:

void erase ( iterator position );

size_type erase ( const key_type& x );

void erase ( iterator first, iterator last );

所以下面的**中的最後乙個例子僅僅可以在windows下的map下執行。

stl的map表裡有乙個erase方法用來從乙個map中刪除掉指令的節點

eg1:

mapmaptest;

typedef map::iterator iter;

iter iter=maptest.find(key);

maptest.erase(iter);

像上面這樣只是刪除單個節點,map的形為不會出現任務問題,

但是當在乙個迴圈裡用的時候,往往會被誤用,那是因為使用者沒有正確理解iterator的概念.

像下面這樣的乙個例子就是錯誤的寫法,

eg2:

for(iter iter=maptest.begin();iter!=maptest.end();++iter)

{

cout可以用以下方法解決這問題:

正確的寫法

1.使用刪除之前的迭代器定位下乙個元素。stl建議的使用方式

for(iter iter=maptest.begin();iter!=maptest.end();)

{

coutfor(iter iter=maptest.begin();iter!=maptest.end();)

{

cout

正確使用stl map的erase方法

正確使用stl map的erase方法 stl的map表裡有乙個erase方法用來從乙個map中刪除掉指令的節點 eg map string string maptest typedef map string string iterator iter iter iter maptest.find k...

正確使用stl map的erase方法

先宣告 下面的文章是針對windows的用法,因為std map的erase函式的windows的實現版本是返回乙個std map的迭代器,但是stl標準裡面的該函式的返回值確是 map.erase有3個過載 void erase iterator position size type erase ...

正確使用stl map的erase方法

先宣告 下面的文章是針對windows的用法,因為std map的erase函式的windows的實現版本是返回乙個std map的迭代器,但是stl標準裡面的該函式的返回值確是 map.erase有3個過載 void erase iterator position size type erase ...