첫 번째 경우는
[1,1,2,2,3,3] 의 배열이 있을 때 [1, 2, 3] 과 같이 뽑아내야 한다고 해보자.
첫 번째 경우는 map을 활용하는 것이다.
{1 : 1}
{2 : 1}.. 과 같이 말이다.
int main(){
vector<int> v{1, 1, 2, 2, 3, 3};
map<int, int> mp;
for(int i : v){
if(mp[i]){
continue;
}else{
mp[i] = 1;
}
}
vector<int> ret;
for(auto it : mp){
ret.push_back(it.first);
}
for(int i : ret) cout << i << " ";
}
범위안의 요소 중 앞에서부터 서로를 비교해가며 중복되는 요소를 제거하고 나머지 요소들은 삭제하지 않고 그대로 두는 함수. O(n)의 시간복잡도
auto it = unique(v.begin(), v.end());
중복되지 않은 요소로 채운 후, 그 다음 이터레이터를 반환한다.
예를 들어서
v = {1, 1, 2, 2, 3, 3, 4, 4, 5, 5}
-> {1, 2, 3, 4, 5, 3, 4, 4, 5, 5} 로 만들고 5를 반환(인덱스 4의 다음)
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end()));