list vector map容器erase的區別

2021-08-09 17:16:23 字數 1320 閱讀 7314

一句話總結:list、vector返回的迭代器,map返回空(c++98標準);注意迭代器不要越界。

map是從模板類繼承來的,不同的c++版本標準其erase函式也不同:

c++98

c++11

void erase (iterator position);

iterator erase (const_iterator position);

size_type erase (const key_type& k);

size_type erase (const key_type& k);

void erase (iterator first, iterator last);

iterator erase (const_iterator first, const_iterator last);

list、vector:

iterator erase( iterator _where);

iterator erase( iterator _first, iterator _last);

如果是刪除指定位置的元素時:

返回值是乙個迭代器,指向刪除元素下乙個元素;如果是刪除某範圍內的元素時:返回值也表示乙個迭代器,指向最後乙個刪除元素的下乙個元素;

typedef list::iterator list_iterator;

list_iterator iter = a.begin();

typedef vector::iterator vector_iterator;

vector_iterator iter = a.begin();

for(;iter!=a.end();)

else

}

而對於map,為了相容標準,能夠在任何機器上編譯通過,並且能夠跨平台(windows、linux)

當在迴圈體中使用map::erase語句時,

mapm;

map::iterator iter = m.begin();

map::iterator itererase;

while (iter != m.end())

也可以:

mapm;

map::iterator iter = m.begin();

while (iter != m.end())

不過這個只適合引數入棧順序是從右向左的方式,引數入棧順序是和具體編譯器實現相關,

如果不幸遇到引數入棧順序是從左向右的,上面的寫法就不行了。

list,vector,map的使用方法

player playerone new player player one player playertwo new player player two player playerthree new player player three player playerfour new player ...

容器 順序容器 關聯容器

容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...

容器 順序容器

容器 include include include 容器元素型別必須滿足 1.支援賦值運算 2.物件可以複製 而io庫型別這兩個都不支援,因此,不能建立存放io型別物件的容器 容器的容器 記得加空格 list vector a list容器迭代器不支援演算法運算 也不支援關係運算 等,它只有自增,...