티스토리 뷰
반응형
unique 함수는 algorithm 헤더에 포함된다.
unique 함수란?
vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수입니다.
주의할 점은 unique 함수를 실행하기 전에 정렬되어 있어야합니다. (sort 함수로 정렬하기)
예를 들어 원소가 1, 1, 2, 3, 4, 5, 5, 6 이렇게 구성되어있었다면,
첫번째 원소 1 다음에 또 1이 중복되서 나왔기 때문에 그 다음 원소인 2가 첫번째 원소 뒤로 가게됩니다.
이런식으로 중복된 수는 뒤로 밀리게 되고 결과는 1, 2, 3, 4, 5, 6, 1, 5 입니다.
이 때 unique 함수는 중복되어 밀리게 된 원소의 시작 부분 즉, 1의 주소를 리턴합니다.
중복 원소 제거하기
위 unique 함수와 erase 함수를 이용하여 중복 원소를 제거할 수 있습니다.
vector<int> v = {1, 1, 2, 3, 4, 5, 5, 6};
v.erase(unique(v.begin(), v.end()), v.end());
unique 함수는 중복된 원소들을 모아둔 뒷부분의 첫번째 원소 주소를 리턴하고,
그 첫번째 주소부터 마지막 까지의 범위에 있는 원소들을 모두 erase 합니다.
이렇게 하면 중복된 원소들을 모아둔 뒷 부분은 모두 삭제 되므로
벡터 v 에는 중복되지 않은 원소들만 남아있게 됩니다.
반응형
'C++' 카테고리의 다른 글
[ C++ ] 이진 탐색 함수 lower_bound, upper_bound (0) | 2021.02.03 |
---|---|
[ C++ ] stringstream 사용 방법 (0) | 2021.01.24 |
[ C++ ] 순열을 구할 수 있는 함수 next_permutation (0) | 2021.01.12 |
[ C++ ] max_element , min_element로 정해진 구간의 원소들 중 최대/최소값 구하기 (0) | 2020.12.27 |
C/C++ 의 모든 자료형 정리 (0) | 2020.10.19 |
댓글