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 하자