std:map的迭代器:刪除時只影響當前元素
#include "stdafx.h"
#include std::mapm;
int main()
else
}printf("2 m.len = %d\n", m.size());
return 0;
}
【原因分析】
it++的操作可拆分為三個步驟:
首先把 it 備份一下。
把 it 加上1。
返回第一步備份的 it 。
所以標準寫法中執行m.erase(it++);語句,在執行erase之前,it 已經被加1了。erase會使得以前那個未被加一的 it 失效,而加了一之後的新的 it 是有效的。
等效寫法將標準寫法進行了拆分。
m.erase(it); // erase以後,it 已經失效,不能再用 it++;
那麼erase操作直接讓 it 失效,對失效的 it 進行 ++ 操作也是失效的。
std::vector的迭代器,刪除時自動返回下乙個元素的位置,所以erase時要取出返回值。
#include std::vectorm;
int main()
else
}printf("2 m.len = %d\n", m.size());
return 0;
}
map的迭代器
iterator iter map.entryset iterator map的迭代器,用作遍歷map中的每乙個鍵值對 iterator是迭代器,map之前應該定義過,姑且認為是hashmap。表示map中的鍵值對都是string型別的。map.entryset 是把hashmap型別的資料轉換成集...
Map迭代器的使用方法
public static void main string args system.out.println key value 2 foreach迴圈 獲取key value for object key map.keyset 獲取value for object value map.values...
Map介面和迭代器
使用iterator迭代器的缺點 1.listiterator有add 方法,可以向list中新增物件,而iterator不能 2.listiterator和iterator都有hasnext 方法,可以實現順序向後遍歷,但是 listiteator裡面有hasprevious 和previous ...