ranges::generate_n

ranges::generate_n (개수만큼 함수 결과로 채우기)

시작 위치부터 지정한 개수만큼의 요소에 생성기 함수의 호출 결과를 대입하는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

std::ranges::generate_nfirst부터 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 버전이에요.

더 알아보기 (Learn more)

cppreference