[C++] 벡터 중복 제거하기

E woo·2023년 7월 11일
0

개발 일기

목록 보기
15/15

unique

unique 함수는 벡터 내에 중복되는 값을 뒤로 모아준다.

벡터의 쓰레기 값인 제일 뒷 부분으로 보내주고
반환값은 벡터의 쓰레기 값의 첫번째 위치가 된다.

따라서 벡터에 unique 를 사용하면 벡터 내 중복된 값을 제거할 수 있는데,

이때 주의할 점은 먼저 벡터를 sort 해야 된다는 것이다.

unique 함수는 연속된 중복 원소들에 대해 중복 여부를 판단하기 때문에

백터 내의 중복 제거를 위해서는

  1. 벡터를 sort 한다.
  2. unique 함수를 통해 중복된 값들을 벡터의 뒷부분으로 보낸다.
  3. erase 함수를 통해 중복된 값을 제거한다.

코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> my_v;

    my_v.push_back(2);
    my_v.push_back(1);
    my_v.push_back(1);
    my_v.push_back(4);
    my_v.push_back(5);
    my_v.push_back(2);
    my_v.push_back(3);

    cout << "원래 벡터 : ";
    for (int i = 0; i < my_v.size(); i++)
    {
        cout << my_v[i] << " ";
    }

    cout << "\n";

    sort(my_v.begin(), my_v.end());

    cout << "정렬 벡터 : ";
    for (int i = 0; i < my_v.size(); i++)
    {
        cout << my_v[i] << " ";
    }

    cout << "\n";

    my_v.erase(unique(my_v.begin(), my_v.end()), my_v.end());

    cout << "중복 제거 벡터 : ";
    for (int i = 0; i < my_v.size(); i++)
    {
        cout << my_v[i] << " ";
    }

    return 0;
}

profile
뒘벼

0개의 댓글