ranges::generate
ranges::generate (범위를 함수 결과로 채우기)
범위의 각 요소에 생성기 함수의 호출 결과를 대입하는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
std::ranges::generate는 범위의 각 요소에 gen()을 연속 호출한 결과를 대입해요.
namespace std::ranges {
template< std::input_or_output_iterator O, std::sentinel_for<O> S,
std::copy_constructible F >
requires std::invocable<F&> && std::indirectly_writable<O, std::invoke_result_t<F&>>
constexpr O generate( O first, S last, F gen );
template< class R, std::copy_constructible F >
requires std::invocable<F&> && ranges::output_range<R, std::invoke_result_t<F&>>
constexpr ranges::borrowed_iterator_t<R> generate( R&& r, F gen );
}
- 반환 값: 마지막으로 채운 요소 다음 반복자.
std::vector<int> v(5);
int n = 0;
std::ranges::generate(v, [&n]{ return n++; });
// v == {0,1,2,3,4}
fill이 같은 값을 채우는 반면, generate는 매번 호출되는 생성기 결과로 채워요.