할머니의 콤퓨타 도전기
벡터 중복 원소 제거하기 (sort, unique, erase) 본문
- unique 함수
- vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수 ( 남은 뒷부분은 그대로 vector 원소값이 존재함)
- 헤더파일 : algorithm
- 정렬된 상태여야 함
- n개의 원소에 대한 시간 복잡도 : O(n)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v;
v.push_back(5);
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(2);
v.push_back(1);
v.push_back(4);
v.push_back(4);
// 기존 : 5 1 2 3 2 1 4 4
sort(v.begin(),v.end()); //1. 정렬
unique(v.begin(),v.end()); //2. unique함수 적용
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<' ';
}
// 결과 : 1 2 3 4 5 4 4 5
return 0;
}
- erase 함수
- erase 함수는 vector 배열에서 특정 원소를 삭제하는 함수
- v.erase(v.begin()+s, v.begin()+e) : [s,e) 원소가 삭제. 시작 지점은 닫힌 구간, 끝나는 지점은 열린 구간으로 삭제됨
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v;
v.push_back(5);
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(2);
v.push_back(1);
v.push_back(4);
v.push_back(4);
//기존 : 5 1 2 3 2 1 4 4
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<' ';
}
//결과 : 1 2 3 4 5
return 0;
}
위와 같이 중복된 원소를 제거할 수 있다.
'Program Language > C++' 카테고리의 다른 글
(C++) tolower, toupper 대소문자 변환 (0) | 2021.01.30 |
---|---|
priority queue 비교 연산자 구현 (0) | 2021.01.30 |
(STL) map vs unordered_map (0) | 2021.01.06 |
(STL) deque 사용법 (0) | 2020.08.03 |
(STL) map 사용법 (0) | 2020.08.03 |
Comments