ranges::generate_n
ranges::generate_n (개수만큼 함수 결과로 채우기)
시작 위치부터 지정한 개수만큼의 요소에 생성기 함수의 호출 결과를 대입하는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
std::ranges::generate_n은 first부터 n개의 요소에 gen()의 호출 결과를 대입해요.
namespace std::ranges {
template< std::input_or_output_iterator O,
std::copy_constructible F >
requires std::invocable<F&> && std::indirectly_writable<O, std::invoke_result_t<F&>>
constexpr O generate_n( O first, std::iter_difference_t<O> n, F gen );
}
n > 0이면n개를 채워요.- 반환 값: 마지막으로 채운 요소 다음 반복자.
std::vector<int> v(5);
int n = 100;
std::ranges::generate_n(v.begin(), 3, [&n]{ return n += 10; });
// v == {110,120,130,0,0}
생성기 결과로 "앞의 N개"만 채울 때 유용한 ranges 버전이에요.