ranges::fold_left

ranges::fold_left (왼쪽 폴드)

초기값과 범위를 이진 연산으로 왼쪽부터 누적해 결합하는 ranges 버전 폴드 알고리즘이에요. <algorithm> 헤더, C++23부터.

출처: cppreference

본문

std::ranges::fold_left는 초기값 init에 범위의 요소를 왼쪽에서 오른쪽으로 이진 연산 op로 누적해요.

namespace std::ranges {
template< std::input_iterator I, std::sentinel_for<I> S, class T,
          std::indirectly_binary_left_foldable<T, I> F >
constexpr auto fold_left( I first, S last, T init, F f );
}
  • 결과는 op(op(op(init, *first), *second), ...) 형태의 왼쪽 폴드예요.
  • 반환 값: std::optional로 감싼 최종 누적값. 범위가 비면 std::nullopt.
  • 기본 init을 쓰는 fold_left_first(첫 요소를 초기값으로)도 있어요.
std::vector<int> v{1, 2, 3, 4};
int sum = *std::ranges::fold_left(v, 0, std::plus<>());   // 10

요소들을 한 값으로 "접어(fold)" 합칠 때 쓰는 함수예요. C++23에서 ranges 방식의 폴드가 표준화됐어요. 연산 순서가 왼쪽부터라는 점에 주의해요.

더 알아보기 (Learn more)

cppreference