ranges_enumerate_view

ranges_enumerate_view (인덱스 포함 뷰)

std::ranges::enumerate_view은 기본 뷰의 각 요소에 0부터 시작하는 인덱스를 붙여 튜플 (index, value)을 생성하는 뷰예요. C++23부터 사용할 수 있어요.

출처: cppreference

본문

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

template< ranges::view V >
    requires /*range-with-movable-references*/<V>
class enumerate_view
    : public ranges::view_interface<enumerate_view<V>>

(1) (since C++23)

namespace views {
    inline constexpr /* unspecified */ enumerate = /* unspecified */;
}

(2)

    1. 기본 뷰 V의 각 요소에 대해 (인덱스, 요소 참조) 쌍의 튜플을 생성하는 뷰. 인덱스는 0부터 시작해요.
    1. enumerate 뷰를 생성하는 뷰 팩토리 객체.

멤버 함수 (Member functions)

  • (constructor) — enumerate 뷰 생성
  • base — 기본 뷰 반환
  • begin / end — (index, value) 튜플을 생성하는 반복자/센티널 반환
  • size — 크기 반환 (sized일 때)

예제 (Example)

이 코드를 실행해 봐요.

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

int main()
{
    std::vector<int> v{10, 20, 30};
    for (auto [i, x] : v | std::views::enumerate)
        std::cout << i << ':' << x << '\n'; // 0:10 1:20 2:30
}

더 알아보기 (Learn more)

cppreference