inclusive_scan
inclusive_scan (접두 합계 — 자기 포함)
범위에 누적 연산(기본 덧셈)을 적용해 접두 합계를 구하되, 각 위치가 자기 자신까지 포함한 이전 원소들의 합을 갖는 알고리즘이에요. <numeric> 헤더, C++17부터.
출처: cppreference
본문
inclusive_scan은 입력 범위 [first, last)를 읽어, d_first부터 각 위치에 "첫 원소부터 그 위치까지의 누적 합"을 저장해요.
template< class InputIt, class OutputIt >
OutputIt inclusive_scan( InputIt first, InputIt last,
OutputIt d_first ); // (1)
-
init없이 기본 덧셈으로 누적해요(첫 원소가 그대로 시작값).
-
- 실행 정책 버전.
- 3,4) 사용자 정의 이진 연산과 선택적
init버전.
예를 들어 {1, 2, 3, 4}에 inclusive_scan을 하면 결과는 {1, 3, 6, 10}이에요. 각 출력이 "자기 자신까지의 누적 합"이죠. (exclusive_scan은 {0, 1, 3, 6}이 돼요.)
병렬 실행이 가능해 큰 배열의 접두 합계를 스레드로 나눠 계산할 때 유용해요. 반환 값은 마지막으로 쓰인 출력 다음 반복자예요.
inclusive(자기 포함)와 exclusive(자기 제외)의 차이만 기억하면 돼요.