본문 바로가기
C++ STL, 알고리즘

[STL] vector unique 함수

by wanna_dev 2023. 10. 5.

vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수이다.

algorithm이라는 헤더에 존재하는 함수이다.

unique함수를 사용하면 중복 없는 요소를 채운 후 남은 요소는 원래 배열의 요소를 그대로 넣는다.

즉, 중복되지 않는 원소들을 앞에서부터 채워나가는 역할을 하기때문에 남은 뒷부분은 그대로 vector 원소값이 존재한다.

또한 unique 함수가 끝나면 중복이 없는 요소의 끝 점을 반환한다.

 

중복을 완전히 제거하지 못하는 문제를 해결하기 위해 erase 함수를 사용해서 남은 뒷부분을 제거야한다.

erase 함수는 vector 배열에서 특정 원소를 삭제하는 함수이다.

v.erase(v.begin(), v.end()) 명령어를 입력하면 처음부터 끝까지 배열 내 모든 원소가 제거된다.

 

이를 적용하여 unique 함수를 적용한 벡터배열에서 필요한 원소만 뽑아낼 수 있다.

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main() {
vector <int> v;
v.push_back(1); v.push_back(1);
v.push_back(2); v.push_back(2);
v.push_back(3); v.push_back(3);
v.push_back(4);
v.push_back(5); v.push_back(5); v.push_back(5);
v.push_back(6);
 
v.erase(unique(v.begin(), v.end()), v.end());
    
return 0;
}

'C++ STL, 알고리즘' 카테고리의 다른 글

BFS, DFS c++  (0) 2023.10.23
c++ lower_bound upper_bound  (0) 2023.10.13
float vs double c++ 부동소수점 문제  (0) 2023.10.12
C++ 입출력 가속 코드  (1) 2023.10.06
이진탐색  (1) 2023.10.04