도순씨의 코딩일지
C++ :: STL 수치 알고리즘 본문
다음 예제는 순차열 모든 원소의 합을 구하는 예제입니다.
⭐️ accumulate() 알고리즘
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
|
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main(void){
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
cout << "v: ";
for(vector<int>::size_type i = 0 ; i < v.size() ; ++i)
cout << v[i] << " ";
cout << endl;
// 0 + 10 + 20 + 30 + 40 + 50
cout << accumulate(v.begin(), v.end(), 0) << endl;
// 100 + 10 + 20 + 30 + 40 + 50
cout << accumulate(v.begin(), v.end(), 100) << endl;
return 0;
}
|
cs |
⭐️ accumulate() 알고리즘 실행결과
1
2
3
|
v: 10 20 30 40 50
150
250
|
cs |
inner_product() 는 두 순차열의 모든 원소의 곱의 합을 구합니다.
⭐️ inner_product()
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
|
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main(void){
vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.push_back(5);
vector<int> v2;
v2.push_back(2);
v2.push_back(2);
v2.push_back(2);
v2.push_back(2);
v2.push_back(2);
// 0 + 1 * 2 + 2 * 2 + 3 * 2 + 4 * 2 + 5 * 2
cout << inner_product(v1.begin(), v1.end(), v2.begin(), 0) << endl;
// 100 + 1 * 2 + 2 * 2 + 3 * 2 + 4 * 2 + 5 * 2
cout << inner_product(v1.begin(), v1.end(), v2.begin(), 100) << endl;
return 0;
}
|
cs |
⭐️ inner_product() 실행결과
1
2
3
|
v: 10 20 30 40 50
150
250
|
cs |
adjacent_difference() 는 모든 인접 원소의 차를 순차열에 저장합니다.
⭐️ adjacent_difference() 알고리즘
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
|
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main(void){
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 : ";
for(vector<int>::size_type i = 0 ; i < v1.size() ; ++i)
cout << v1[i] << " ";
cout << endl;
vector<int> v2(5);
vector<int>::iterator iter_end;
iter_end = adjacent_difference(v1.begin(), v1.end(), v2.begin());
cout << "v2 : ";
for(vector<int>::size_type i = 0 ; i < v2.size() ; ++i)
cout << v2[i] << " ";
cout << endl;
return 0;
}
|
cs |
⭐️ adjacent_difference() 알고리즘 실행결과
1
2
|
v1 : 10 20 30 40 50
v2 : 10 10 10 10 10
|
cs |
partial_sum()은 순차열에서 현재 원소까지의 합을 도출합니다.
⭐️ partial_sum() 알고리즘
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
|
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main(void){
vector<int> v1;
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
cout << "v1 : ";
for(vector<int> :: size_type i = 0 ; i < v1.size() ; ++i)
cout << v1[i] << " ";
cout << endl;
vector<int> v2(5);
vector<int>::iterator iter_end;
iter_end = partial_sum(v1.begin(), v1.end(), v2.begin());
cout << "v2 : ";
for(vector<int>::size_type i = 0 ; i < v2.size() ; ++i)
cout << v2[i] << " ";
cout << endl;
return 0;
}
|
cs |
⭐️ partial_sum() 알고리즘 실행결과
1
2
|
v1 : 10 20 30 40 50
v2 : 10 30 60 100 150
|
cs |
📚 출처
공동환(2012), 뇌를 자극하는 C++ STL, 한빛미디어.
'𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆 > 𝐂++' 카테고리의 다른 글
C++ :: STL 함수 객체(1) (0) | 2020.11.01 |
---|---|
C++ :: STL 정렬된 범위 알고리즘 (0) | 2020.09.27 |
C++ :: STL 변경 알고리즘 & 정렬 알고리즘 (0) | 2020.09.25 |
C++ :: STL 원소를 수정하는 알고리즘 & 제거 알고리즘 (0) | 2020.09.24 |
C++ :: STL 원소를 수정하지 않는 알고리즘 (0) | 2020.09.23 |
Comments