algorithm_inclusive_scan

algorithm_inclusive_scan (포함적 누적 합계)

std::inclusive_scan은 범위의 요소들에 대해 포함적(inclusive) 접두 합계를 계산해요. 각 위치의 결과에 자기 자신의 요소를 포함하는 게 특징이에요.

출처: cppreference

본문

std::inclusive_scan<numeric> 헤더에 정의되어 있어요. C++17부터 사용 가능해요.

template< class InputIt, class OutputIt >
OutputIt inclusive_scan( InputIt first, InputIt last,
                         OutputIt d_first );

template< class InputIt, class OutputIt, class BinaryOp >
OutputIt inclusive_scan( InputIt first, InputIt last,
                         OutputIt d_first, BinaryOp op );

이진 연산 op를 사용해 포함적 접두 합계를 계산해요. [0, std::distance(first, last))의 각 정수 i에 대해 [first, iter]의 요소(여기서 iterfirsti번째 다음 반복자)로 수열을 만들고 그 수열에 op를 이용한 일반화된 비가환 합을 구해 *dest에 할당해요.

1번 오버로드inclusive_scan(first, last, d_first, std::plus<>())와 동등해요. 병렬 실행 정책을 받는 오버로드도 있어요.

반환값 (Return value)

출력 범위의 끝(past-the-end) 반복자예요.

예제 (Example)

#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>

int main()
{
    std::vector data {3, 1, 4, 1, 5, 9, 2, 6};
    std::cout << "inclusive sum: ";
    std::inclusive_scan(data.begin(), data.end(),
                        std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}

출력:

inclusive sum: 3 4 8 9 14 23 25 31

더 알아보기 (Learn more)

cppreference