VC++8.0에서의 vector::erase(), iterator
VC++8.0 이하의 버전에서는 vector 객체를 iterator로 순환하면서 vector 내의 아이템을 삭제할 때 아래와 같은 코드에 문제가 없었습니다.

std::vector<int> vt;
std::vector<int>::iterator it;

for(it=vt.begin();it<vt.end();it++){
   if(조건){
       vt.erase(it);
  }
}

하지만 VC++8.0에서는 런타임시 오류가 발생합니다.
그래서 아래와 같이 코드를 바꿨습니다.

for(it=vt.begin();it<vt.end();){
   if(조건){
       it = vt.erase(it);
  }
  else{
       it++;
  }
}

vector::erase()는 반환값으로 삭제한 iterator의 다음 iterator를 반환합니다.

출처 : http://ani2life.egloos.com/3230570

Leave a comment

« Previous : 1 : 2 : 3 : 4 : 5 : 6 : ... 35 : Next »

Recent Posts

  1. [참고자료] 모니터 해상도 도표
  2. [런타임에러] Expression: map/set it..
  3. *. 플러그인 랩퍼 사용하기 ( 3DS MAX..
  4. *. 스키닝 오프셋 벡터 [Offset Vecto..
  5. November 2007 DirectX SDK News

Recent Comments

  1. 관리자만 볼 수 있는 댓글입니다. 06/24

Recent Trackbacks

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. Cafe24
  2. ForTheProgramming
  3. Tatter Tools
  4. 근석이
  5. 진호네

Site Stats

TOTAL 14472 HIT
TODAY 15 HIT
YESTERDAY 16 HIT
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.