본문 바로가기

Algorithm/기초다지기

[c++] vector 중복값 없애기

swea 문제를 풀다가 알게된 vector의 원소 중 중복값 없애기!

정말 간단하게 가능하다.

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

using namespace std;

int main(){
    vector<int> v;
    
    v.push_back(2);
    v.push_back(4);
    v.push_back(5);
    v.push_back(2);
    v.push_back(7);
    v.push_back(4); //2,4,5,2,7,4 순서대로 저장됨.
    
    sort(v.begin(), v.end()); 
    v.erase(unique(v.begin(), v.end()), v.end()); 
    
    /*
    algorithm 라이브러리에 있는 sorting 함수로 원소들을 정렬.
    algorithm 라이브러리에 있는 unique 함수: 중복된 값을 맨 뒤로 보내고 중복된 값의 처음 인덱스를 반환한다.
    v = {2,4,5,2,7,4} -> v = {2,4,5,7,2,4} -> 두번째 2 인덱스 4를 반환
    
    
    vector 함수인 erase를 통해 마지막 2와 4를 지운다.
    */
    
    //최종: v = {2,4,5,7}

    return 0;
}

 

algorithm 라이브러리를 추가 해주고 

sort(v.begin(), v.end()); 
v.erase(unique(v.begin(), v.end()), v.end());

이 두 줄만 추가하면 완성!