unique 는 범위 안에 있는 요소 중 앞에서부터 서로를 비교해가며 중복되는 요소를 제거하고 나머지 요소들은 삭제하지 않고 그대로 두는 함수이다. O(n)의 시간복잡도를 가진다.
중복되는 요소를 제거하고 나머지 요소들을 그대로 둔다는 게 어떤 말인지 감이 안오는데
아래 코드와 결과값을 보자.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v {1,1,2,2,3,3,2,2,4,4,5,5};
unique(v.begin(), v.end());
for (int i : v) cout << i << ' ';
}
[출력] 1 2 3 2 4 5 2 2 4 4 5 5
1 2 3 2 4 5 까지 중복 제거한 값들이 나오고 이 후의 요소들은 그대로 보존되어 2 2 4 4 5 5 로 나타나고 있다.
이러한 문제는 sort()를 사용해 해당 요소들을 정렬한 후에 범위의 요소를 제거하는 erase()를 사용하면 해결할 수 있다. 아래 코드를 보자.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v {1,1,2,2,3,3,2,2,4,4,5,5};
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (int i : v) cout << i << ' ';
}
[출력] 1 2 3 4 5
'C++' 카테고리의 다른 글
[C++] 요소의 최댓값과 최솟값 : max_element(), min_element() (0) | 2024.02.02 |
---|---|
[C++] 요소의 합을 구하는 함수 : accumulate() (0) | 2024.02.02 |
[C++] 정렬 함수 : sort() (0) | 2024.02.02 |
[C++] 벡터,배열 복사하기 : copy() (0) | 2024.02.02 |
[C++] 배열 초기화 함수 : fill(), memset(), {0, } (0) | 2024.02.02 |