algorithm_generate

algorithm_generate (함수 결과로 채우기)

std::generate는 함수 객체 gen()을 반복 호출한 결과로 대상 범위 [first, last)의 모든 요소를 채워요.

출처: cppreference

본문

std::generate<algorithm> 헤더에 정의되어 있어요.

template< class ForwardIt, class Generator >
void generate( ForwardIt first, ForwardIt last, Generator gen );
  • 1번 오버로드gen()을 연속 평가한 결과를 대상 범위 [first, last)의 각 요소에 할당해요.
  • 2번 오버로드(병렬) — 실행 정책 policy에 따라 수행해요.

복잡도 (Complexity)

Nstd::distance(first, last)라고 하면 정확히 N번의 gen() 평가와 N번의 배정이 필요해요.

예제 (Example)

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v(5);
    std::generate(v.begin(), v.end(), [n = 1]() mutable { return n *= 2; });
    for (int x : v) std::cout << x << ' ';
    std::cout << '\n';
}

출력:

2 4 8 16 32

더 알아보기 (Learn more)

cppreference