2015년 5월 21일 목요일

vector 에서 iterator를 통한 반복 도중 요소 삭제 (vector/iterator/element/erase/delete)

vector에서 iterator를 통해 조회하다가 특정 요소를 삭제시키고 싶을 때 아래와 같이 하시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
using namespace std;
int main(void){
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
    for (vector<int>::iterator iter = v.begin(); iter == v.end();){ // 여기서
//          iter++ 를 하지 않는다.
        if (*iter == 3){
            iter = v.erase(iter); // erase함수는 해당 요소를 제거하고
  ​    ​    // 그 다음 요소의 iter를 반환
        } else {
            iter++// 제거하지 않을 때는 그냥 증가
        }
    }
    return 0;
}
cs

댓글 없음:

댓글 쓰기