벡터의 중복되는 원소 제거하기
2023. 2. 7. 01:24ㆍc++
728x90
erase함수와 unique 함수를 사용하여 제거한다.
1. unique 함수
- algorithm 헤더파일에 존재한다.
- 중복되는 원소들은 제거해 나가며 앞에서부터 원소들로 벡터를 구성한다.
- unique 함수만 사용하면 중복된 원소들이 제거되지만 뒤의 인덱스엔 기존 원소들이 그대로 있기 때문에 erase 함수와 같이 사용해야 한다.
- n개의 원소에 대한 unique 함수의 시간복잡도는 O(n)이다.
std::v.unique(v.begin(),v.end());

2. erase 함수
std::v.erase(v.begin()+5); //5번째 인덱스를 지우고 싶을 때
3. unique함수와 erase 함수를 같이 사용하기
std::v.erase(unique(v.begin(),v.end()), v.end());

코테 풀이하다가 알게된 새로운 사실..
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
int main() {
vector <int> a={1,1,2,3,3,1};
a.erase(unique(a.begin(),a.end()),a.end());
for(int i:a){
cout<<i<<endl;
}
}
중복된 원소가 제거 된다고 해서 마지막 1도 지워지는 줄 알았다.
그러나 아니다.
연속된 중복된 원소만 제거되는 것이었다!!!!!
728x90
'c++' 카테고리의 다른 글
| 문자열 입력 받기 (0) | 2023.03.11 |
|---|---|
| 찾으려는 key 값보다 같거나 큰 숫자가 몇 번째에서 처음 등장하는지 찾기 (0) | 2023.02.07 |
| iterator 반복자 사용 (0) | 2022.12.28 |
| sort () 함수 (0) | 2022.12.26 |
| 반복문으로 별찍기 (0) | 2022.12.20 |