2012. 8. 27. 19:30
for( map<string,vector<int> >::iterator iter = MyMap.begin(); iter != MyMap.end(); ) {
if( iter->second.size() < 1 ) {
MyMap.erase(iter++);
}
else{
iter++;
}
}
위처럼 erase(iter++);하지 않으면, iter을 미리 다른곳에 보관한다음, 삭제후 복원해야 한다.
혹은
for( map<string,vector<int> >::iterator iter = MyMap.begin(); iter != MyMap.end(); ) {
if( iter->second.size() < 1 ) {
iter = MyMap.erase(iter);
}
else{
iter++;
}
}
'c/c++' 카테고리의 다른 글
c++ vector 등 연속 메모리 컨테이너를 배열처럼 쓰는 방법 (0) | 2012.09.09 |
---|---|
multimap에서 equal_range()로 아무것도 못찾은 경우 (0) | 2012.09.01 |
C++ STL 에서 iterator사용시 주의점 (0) | 2012.08.20 |
가상함수 virtual은 어떤 경우에 써야 할까 ? (0) | 2012.07.18 |
c/c++ 연산자 우선순위표 (0) | 2012.07.13 |