1. iterator 사용법
vector<int> v;
1. 선언
vector<int>::iterator it;
2. 반복문에 사용하기
for(it = v.begin(); it != v.end(); it++){ //+, - 연산 가능)
cout << *it << endl;
}
3. 임의 접근 가능
cout << iter[2] << endl;
2. vector 중복 제거
unique() 함수와 erase()를 사용한다.
unique()
template <class ForwardIterator> ForwardIterator unique (ForwardIterator first, ForwardIterator last);
이 함수는 first 와 last 사이에 중복되는 값이 있으면 그걸 맨 뒤로 보낸다. 그리고 그 맨뒤로 보내진 애들(중복된 애들)의 맨 앞 값을 줌으로써 유효한 범위를 알려준다.
예를 들어서
1 3 3 4 5 6 6 7 이 있는 벡터를 주게 되면 1 3 4 5 6 7 3 6으로 재정렬한 후에 두 번째 3이 있는 위치를 반환한다.
1 | 3 | 4 | 5 | 6 | 7 | 3 | 6 |
그럼 이 반환된 iterator을 가지고 뒤에 쓰레기값들을 삭제하면 된다.
erase()
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
두 개 중에 후자는 지울 요소들 중 첫 iterator와 마지막 iterator을 줘서 둘 사이의 값들을 삭제할 수 있다. 이걸 이용하면 된다.
sort(v.begin(), v.end());
vector<int>::iterator it = unique(v.begin(), v.end());
v.erase(it, v.end());
'언어 > C&C++ 응용' 카테고리의 다른 글
[C++] 시간 초과 해결 (1) | 2021.09.18 |
---|---|
[C++] upper_bound, lower_bound (0) | 2021.09.11 |
[C] 정렬: qsort() (0) | 2021.09.07 |
[C++] std::sort() (0) | 2021.09.06 |
[C] 특수 입력 (0) | 2021.08.24 |