萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> Html5 >> C++遍歷中刪除std::map元素

C++遍歷中刪除std::map元素

下面是C++遍歷中刪除std::map元素

在std::list中刪除一個元素非常簡單,直接使用erase方法即可,代碼如下:

for(iter = list.begin();

iter != list.end();) {

if (shouldDelete(*iter)) iter = list.erase(iter); else ++iter; }

或者更簡單點

list.erase(std::remove_if(list.begin(), list.end(), shouldDelete), list_end());

然而根據STL std::map中的定義

void erase(iterator pos),此erase並不返回下一個元素的迭代器,因此不能采用std::list的方法

The truth is that ‘erase’

in associative containers doesn’t invalidate any iterators except those that point to elements being erased (that’s also true for ’sid::list’).

For this reason, you don’t really need ‘map::erase’ to return an iterator.

Just do this for(iter = map.begin(); iter != map.end();) { if (shouldDelete(*iter)) map.erase(iter++); else ++iter; }

當然此方法同樣也適合於std::list等

以上就是我們給大家介紹的C++遍歷中刪除std::map元素,希望大家繼續關注本網站。

copyright © 萬盛學電腦網 all rights reserved