(C++) vector - accumulate, clear/erase, unique(+sort)
2022. 8. 18. 15:01ㆍSTUDY/C++
반응형
# accumulate
HEADER : #include <numeric>
C++ 배열의 합을 구하는 함수이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <numeric>
#include <iostream>
using namespace std;
int main() {
vector<int> v{1,2,3,4,5,6,7,8,9,10};
int sum = accumulate(v.begin(), v.end() ,0);
// accumulate( first iter, lase iter, initial val of sum );
vector<int> v2 = { 1000000000, 2000000000 }; // long long int
long long sum = accumulate(v.begin(), v.end(), 0LL);
return 0;
}
|
cs |
아래의 경우처럼 long long int 값을 더해줄때는,
accumulate ( begin, end , 0LL ) 맨 뒤의 합 초기값 까지 맞춰줘야한다. 실수 조심 !
# vector::clear()
All elements are destroyed one by one. So Time complextiy is O(N).
clear() is, All the elements of the vector are removed.
# vector::erase()
erase() function is used to remove elements from a container from the specified position or range.
1. vector.erase(1)
2. vector.erase( begin_position, end_position )
Ex)
Input : myvector= {1, 2, 3, 4, 5},
iterator= myvector.begin()+2 (시작점+2번위치)
myvector.erase(iterator); (위에서 정의한 iterator삭제)
Output : 1, 2, 4, 5 ( 3번째 인 3 삭제됨 )
Input : myvector= {1, 2, 3, 4, 5, 6, 7, 8},
iterator1= myvector.begin()+3, ( 시작점+3 인 값인 4 )
iterator2= myvector.begin()+6 ( 시작점+6 인 값인 6 )
myvector.erase(iterator1, iterator2); ( 4 ~ 6 삭제)
Output : 1, 2, 3, 7, 8
# Unique ( + sort)
HEADER : #include <algorithm>
Unique와 Sort 는 같은 헤더를 쓴다.
아래의 소스는 다음과 같다.
먼저 기존 벡터 배열 출력 -> Sorting -> Unique / erase(Unique)
Sorting 하고, Unique로 중복된 원소 뒤로 보낸다음, erase해줌으로써 중복된 원소 완전 삭제해준다.
물론 문자도 동일하게 사용가능하다.
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
29
30
31
|
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> nums;
int main()
{
nums = {1,2,1,3,1,2,1,3};
// nums = {a,b,c,b,a,d}; cout << "Nums : ";
for(int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
cout << '\n';
sort(nums.begin(), nums.end());
cout << "After Sorting : ";
for(int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
cout << '\n';
#if 0
unique(nums.begin(), nums.end());
cout << "Use unique : ";
for(int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
cout << '\n';
#else
nums.erase(unique(nums.begin(), nums.end()), nums.end());
cout << "Use unique and erase overlap numbers : ";
for(int i = 0; i < nums.size(); i++) cout << nums[i] << " ";
cout << '\n';
#endif
}
|
//cs |
# 결과
728x90
반응형
'STUDY > C++' 카테고리의 다른 글
C++ min , max, index 구하기 (1) | 2022.08.21 |
---|---|
C++ - 2차배열 / 동적할당 패턴 연습 (+입력 정리, vector 인자로 넘길때) (0) | 2022.08.19 |
C++ - vector of pairs / vector of vectors (1) | 2022.08.09 |
C++ - pair ( aka. vector / typedef / sort ) (1) | 2022.08.08 |
C++ - 수식 함수들 (0) | 2022.08.07 |