[C++] inclusive_scan/exclusive_scan
Updated:
개요
- 현재 연산 결과가 다음 연산의 입력
- exclusive_scan는 마지막 요소는 연산에서 제외
예제
- 코드
#include <iostream> #include <numeric> #include <vector> using namespace std; int main() { vector<int> in{1, 2, 3, 4, 5}; vector<int> out(in.size()); inclusive_scan(begin(in), end(in), begin(out)); for (const auto &iter : out) { cout << iter << " "; } cout << endl; cout << "------ 1" << endl; inclusive_scan(begin(in), end(in), begin(out), minus<>{}); for (const auto &iter : out) { cout << iter << " "; } cout << endl; cout << "------ 2" << endl; inclusive_scan(begin(in), end(in), begin(out), plus<>{}, 10); for (const auto &iter : out) { cout << iter << " "; } cout << endl; cout << "------ 3" << endl; exclusive_scan(begin(in), end(in), begin(out), 0); for (const auto &iter : out) { cout << iter << " "; } cout << endl; cout << "------ 4" << endl; exclusive_scan(begin(in), end(in), begin(out), 0, minus<>{}); for (const auto &iter : out) { cout << iter << " "; } cout << endl; cout << "------ 5" << endl; exclusive_scan(begin(in), end(in), begin(out), 10, plus<>{}); for (const auto &iter : out) { cout << iter << " "; } cout << endl; return 0; }
- 실행 결과
1 3 6 10 15 ------ 1 1 -1 -4 -8 -13 ------ 2 11 13 16 20 25 ------ 3 0 1 3 6 10 ------ 4 0 -1 -3 -6 -10 ------ 5 10 11 13 16 20