벡터에서 erase를 사용하면 해당 원소가 사라지고 뒤에것들이 앞으로 떙겨지게 된다.
그런데 만약에 이터레이터값을 이용해 반복문을 수행하고 있으면, 이터레이터++ 이것 때문에 문제가 발생할수 있다.
이를 방지하려면 코드를 이렇게 짜면 된다.
for(vi=v.begin(); vi != v.end(); )
{
if(삭제조건){ _vi=_v.erase(_vi);} //이레이즈를 하게되면 지워진 원소의 다음번 이터레이터를 반환한다.
else{_vi++}
}
'프로그래밍 > C++' 카테고리의 다른 글
함수포인터 활용 (0) | 2016.09.01 |
---|---|
c++ 파일 입출력 (텍스트 파일을 읽어서 원하는 정보 얻어오기) (1) | 2016.08.11 |
벡터 clear (0) | 2016.07.13 |
프로그램 진행시간 측정 하는법. (0) | 2016.04.02 |
첫글 (0) | 2016.02.22 |