프로그래밍/C++
벡터에서 erase사용시 주의할것.
JinFluenza
2016. 3. 30. 11:10
벡터에서 erase를 사용하면 해당 원소가 사라지고 뒤에것들이 앞으로 떙겨지게 된다.
그런데 만약에 이터레이터값을 이용해 반복문을 수행하고 있으면, 이터레이터++ 이것 때문에 문제가 발생할수 있다.
이를 방지하려면 코드를 이렇게 짜면 된다.
for(vi=v.begin(); vi != v.end(); )
{
if(삭제조건){ _vi=_v.erase(_vi);} //이레이즈를 하게되면 지워진 원소의 다음번 이터레이터를 반환한다.
else{_vi++}
}