Updated:

1 minute read

개요

  • 현재 연산 결과가 다음 연산의 입력
  • 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