반응형
unique 함수란?
- 헤더파일: #include <algorithm>
- vector 배열에서 원소를 중복없이 앞쪽에 채워주는 함수이다.
- 기존 크기는 변화가 없기 때문에 앞쪽에 채워지고 남은 뒷공간에 원소들이 그대로 존재한다.
ex. {2, 3, 3, 4, 5, 5, 1, 1, 1} → {2, 3, 4, 5, 1, 5, 1, 1, 1}
중복 없는 unique한 원소를 앞쪽에 배치해주는 것이라고 볼 수 있다.
원소 배치 및 개수에 따라 뒤쪽에 중복 원소들이 있을 수 있는데 erase 함수 활용해서 제거할 수 있다.
즉, vector의 중복 원소를 제거할 수 있다.
이러한 처리해주는 것으로는 STL 중 set 이 존재한다.
vector에서 erase(v.begin() + s, v.begin() + e)는 [s, e) 원소가 삭제된다.
→ 시작 지점은 닫힌구간, 끝나는 지점은 열린 구간
① unique 함수를 통해서 중복 없는 원소를 앞쪽으로 배치
② erase 함수를 통해서 뒤쪽에 있는 원소 제거
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector <int> v;
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(1); v.push_back(1); v.push_back(1);
vector <int> v2 = v;
cout << "<1. vector 배열 원소>" << endl;
for (const auto& i : v)
{
cout << i << ' ';
}
cout << endl;
cout << "\n<2. unique 함수 적용>" << endl;
unique(v.begin(), v.end());
for (const auto& i : v)
{
cout << i << ' ';
}
cout << endl;
cout << "\n<3. unique + erase 함수 적용>" << endl;
v2.erase(unique(v2.begin(), v2.end()), v2.end());
for (const auto& i : v2)
{
cout << i << ' ';
}
cout << endl;
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] [STL] multiset (0) | 2021.07.30 |
---|---|
[C++] [STL] Set (0) | 2021.07.29 |
[C++] [STL] Vector 사용 방법 (0) | 2021.07.26 |
[C++] protected 생성자(Constructor)란? (2) | 2021.07.04 |
[C++] 상속 관계에서 생성자 호출순서와 명시적 호출이란? (2) | 2021.07.04 |
댓글