중복 요소 제거 함수 unique()
🔎 unique()
unique() 함수는 지정된 범위 내에서 중복되지 않는 원소들을 앞에서부터 나열해준다.
앞에서부터 다음 요소와 비교해가며 중복된 부분을 제거하기 때문에 반드시 정렬 후에 사용해야한다.
나열한 마지막 요소의 다음 이터레이터를 반환한다.
ForwardIt unique(ForwardIt first, ForwardIt last)
사용 예시
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a {6, 1, 5, 8, 3, 8, 4, 2, 1, 3, 6};
sort(a.begin(), a.end());
auto k = unique(a.begin(), a.end());
for (int i : a) {
cout << i << " ";
}
cout << "\n반환한 이터레이터는 " << k - a.begin() << "번째" << "\n";
return 0;
}
실행 결과
1 2 3 4 5 6 8 6 6 8 8
반환한 이터레이터는 7번째
6번째 인덱스에 해당하는 8까지 정렬한 후 나머지 요소들은 제거되지 않고 유지되었으며
7번째 요소의 이터레이터를 반환한 것을 위의 출력을 통해 알 수 있다.
🔎 erase()를 사용해 중복 요소가 없는 vector 만들기
unique()가 나열한 마지막 요소의 다음 이터레이터를 반환하므로
이를 이용해서 erase()와 함께 사용하면 중복 요소가 없는 vector를 만들 수 있다.
사용 예시
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a {6, 1, 5, 8, 3, 8, 4, 2, 1, 3, 6};
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
for (int i : a) {
cout << i << " ";
}
return 0;
}
실행 결과
1 2 3 4 5 6 8
댓글남기기