728x90
코드를 작성할때 정렬한 후에 중복된 원소의 값을 제거해야하는 문제가 나온다.
이 때 sort, unique, erase 를 사용하여 코드를 짜면된다.
(#include <algorithm> 을 선언해야한다.)
sort 는 그냥 정렬해주는 함수이다.
unique
vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수이다.
중복되지 않는 원소들을 앞에서부터 채워나가는 역할을 하기 때문에 남은 뒷부분은 그대로 vector 원소값이 존재한다.
반환 값이 vector의 쓰레기 값의 첫 번째 위치이다.
erase
erase 함수는 vector 배열에서 특정 원소를 삭제하는 함수이다.
즉 , v.erase(v.begin(), v.end()); 를 하면 v의 원소 모두를 제거해주는 것이다.
( 어디서 부터 어디까지 제거할지 정해야함!)
즉, v.erase(unique(v.begin(),v.end()),v.end()); 를 하면 중복되는 부분의 값을 제거해주어 원하는 배열을 얻을 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 1,2,3,3,2,1,1,4,5,6,7 };
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (int i = 0; i < v.size(); i++) {
// 1234567 출력
cout << v[i];
}
}
'알고리즘 > 기타 개념' 카테고리의 다른 글
[c++] STL priority_queue 활용법 (0) | 2021.10.04 |
---|---|
[C++] map container (0) | 2021.09.29 |
[C++] vector 비우기 (0) | 2021.09.12 |
[C++] string의 변환 (0) | 2021.08.27 |
[C++] upper_bound, lower_bound (0) | 2021.08.26 |