ranges_to

ranges_to (범위를 컨테이너로 변환)

std::ranges::to는 범위를 지정한 컨테이너 타입으로 변환하는 함수예요. C++23부터 사용할 수 있어요.

출처: cppreference

본문

<ranges> 헤더에 정의되어 있고, 시그니처는 다음과 같아요.

template< class C, ranges::input_range R, class... Args >
    requires (!ranges::view<C>)
constexpr C to( R&& r, Args&&... args );

(1) (since C++23)

template< template< class... > class C,
          ranges::input_range R, class... Args >
constexpr auto to( R&& r, Args&&... args );

(2)

매개변수 (Parameters)

  • r — 변환할 범위
  • args — 컨테이너 생성자에 전달할 추가 인자

반환값 (Return value)

범위 r의 요소를 담은 컨테이너.

참고 (Notes)

  • (1) 범위 r의 요소를 타입 C의 컨테이너로 변환해요 (예: std::ranges::to<std::vector<int>>(r)).
  • (2) 템플릿 탬플릿 매개변수(예: std::vector)로 컨테이너를 지정하고 요소 타입을 추론해요 (예: std::ranges::to<std::vector>(r)).

뷰 파이프라인의 결과를 구체적인 컨테이너로 모을 때 흔히 사용해요.

예제 (Example)

이 코드를 실행해 봐요.

#include <ranges>
#include <vector>
#include <iostream>

int main()
{
    auto v = std::views::iota(0, 5) | std::ranges::to<std::vector<int>>();
    for (int x : v) std::cout << x << ' '; // 0 1 2 3 4
}

더 알아보기 (Learn more)

cppreference