erase, clear 주의점
Posted 2013. 1. 3. 16:18삭제시
for( ; iter != data.end() ; )
{
iter = data.erase(iter);
}
iter의 erase는 해당데이터를 삭제하고 다음 데이터를 반환한다.
만약 총 10개의 데이터가 들어 있다 치고 10개를 삭제할시
for( ; iter != data.end() ; ++iter )
{
iter = data.erase(iter);
}
붉은색처럼 해버리면 1, 2, 3, 4, 5 순으로 삭제되는게 아니라, 1, 3, 5, 7, 9 로 삭제 되 버린다.
흔히 하기 쉬운 실수임.
또.. 동적할당도 직접 해제해 줘야하니
delete 부터 해주고 erase 하자
- Filed under : C++/STL 주의점