1. Use List:
list中erase會回傳iterator,所以要erase(it)
list<int> tmp; for(list::iterator it = tmp.begin() ; it != tmp.end() ; /*empty*/ ) { if( something ) it = tmp.erase(it); else it++; }
2. Use Map:
map中erase竟然又不一樣,回傳void,所以需要erase(it++)
map<int,int> tmp; for(map::iterator it = tmp.begin() ; it != tmp.end() ; /*empty*/ ) { if( something ) tmp.erase(it++); else it++; }
其實應該要看他內部為啥實做成兩種模式的
但是STL聖經一直供在桌上懶得看XD
有空再來研究