1 분 소요

개요

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