반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- sstream
- list
- deletion
- 알고리즘
- function_template
- red-black tree
- qsort
- 자료구조
- sort
- 13305
- Biconnected_Component
- connected_component
- 백준
- 예제
- Heap
- c++
- 총정리
- 구현
- Pair
- '0'
- data_structure
- Articulation_Point
- Algorithm
- class_template
- template
- singly Linked List
- Critical_Path_Analysis
- 문법
- STL
- 5397
Archives
- Today
- Total
- Today
- Total
- 방명록
어제의 나보다 성장한 오늘의 나
[C++] Unique 함수 정리 및 예제 본문
반응형
◎ 시간 복잡도 : O(N)
◎ 중복된 값을 제거 하기 위해 사용하는 함수
◎ <algorithm> 의 sort와 erase와 함께 사용함.
◎ 반드시 정렬을 해준 뒤 사용한다.
헤더파일
#include <algorithm>
사용법
vector<int> v = { 2, 3, 5 , 2, 3, 5 ,4};
sort(v.begin() , v.end());
v.erase( unique(v.begin() , v.end()) , v.end());
for(auto x : v){
cout << x << ' ';
}
// 출력 : 2 3 4 5
1) 벡터를 먼저 정렬한다. (sort)
2) unique 사용
3) erase 로 중복된 원소 삭제.
unique 함수에 대해 좀 더 자세히 알아보자
① 중복된 원소들을 제거하고 제거된 숫자만큼 벡터를 쓰레기 값으로 채운다.
vector<int> v = { 2, 2, 2 , 2, 3, 4 ,5}; //정렬된 벡터
auto it = unique(v.begin() , v.end());
for(auto x : v){
cout << x << ' '; // 출력 : 2 3 4 5 3 4 5
}
cout << it - v.begin() ; // 4 (2, 3, 4, 5 다음 값을 it가 가리키고 있다.)
- 출력값을 보면 뒤 3 , 4 , 5는 기존 벡터에 있던 값이다. 즉 , 2가 삭제된 만큼( 3개 ) 쓰레기 값으로 기존 벡터의 뒷 원소가 들어간다.
- unique는 중복 제거된 원소들 다음 값을 가리키는 iterator를 반환한다.
② sort가 필수이다.
정렬하지 않고 사용
vector<int> v = { 2, 3, 5 , 2, 3, 5 ,4};
auto it = unique(v.begin() , v.end());
for(auto x : v){
cout << x << ' ';
}
// 출력 : 2 3 5 2 3 5 4
- unique 알고리즘이 나란히 있는 같은 값을 삭제하는 방식이기 때문에 sort를 하지 않으면
제대로 작동 하지 않는다.
반응형
'c++ > 문법' 카테고리의 다른 글
[c++][자료구조] Vector / List 비교 및 STL 정리 (0) | 2022.02.13 |
---|---|
[c++] 이진 탐색 ( lower_bound , upper_bound ) 사용 및 예제 (0) | 2022.02.13 |
[c / c++] new / malloc / calloc /realloc 총 정리 & 예제 (0) | 2022.02.12 |
[c++] [자료형] int / double / char / float 크기 (0) | 2022.02.12 |
[C++] Sort 와 Compare 함수 (Greater , less) (0) | 2022.02.10 |
Comments