Namespaces
Variants

std::ranges::cartesian_product_view<First, Vs...>:: end

From cppreference.net
Ranges library
Range adaptors
constexpr iterator < false > end ( )

requires ( ( ! /*simple-view*/ < First > || ... || ! /*simple-view*/ < Vs > ) &&

/*cartesian-product-is-common*/ < First, Vs... > ) ;
(1) (C++23 이후)
constexpr iterator < true > end ( ) const
requires /*cartesian-product-is-common*/ < const First, const Vs... > ;
(2) (C++23 이후)
constexpr std:: default_sentinel_t end ( ) const noexcept ;
(3) (C++23 이후)

반복자 또는 cartesian_product_view 의 끝을 나타내는 센티널을 반환합니다.

bases_ 를 기본 뷰들의 튜플로 둡니다.

1,2) 다음에 해당함
auto check = [ ] ( auto & rng ) { return __begin_or_first_end ( rng ) ; } ;
return iterator < __is_const > ( /*tuple-transform*/ ( check, bases_ ) ) ;
,
여기서:
  • __is_const const-qualified 오버로드에 대해 true 이고, 그렇지 않으면 false 입니다.
  • __is_empty 는 첫 번째 범위를 제외한 기본 범위들 중 어떤 rng 에 대해 표현식 ranges:: empty ( rng ) true 이면 true 이고, 그렇지 않으면 false 입니다.
  • __begin_or_first_end ( rng ) 표현식-동등 합니다: __is_empty ? ranges:: begin ( rng ) : /*cartesian-common-arg-end*/ ( rng ) (만약 rng 가 첫 번째 기본 범위인 경우) 그리고 ranges:: begin ( rng ) (그 외의 경우).
3) 동등한 표현: return std:: default_sentinel ; .

목차

매개변수

(없음)

반환값

마지막 요소 다음의 요소를 가리키는 iterator 또는 끝 iterator와 동일하게 비교되는 sentinel입니다.

예제

#include <array>
#include <format>
#include <iostream>
#include <ranges>
#include <string_view>
#include <tuple>
using namespace std::literals;
int main()
{
    constexpr auto a = std::array{ "bool"sv, "goto"sv, "extern"sv, "long"sv }; /*
                                       ^         ^           ^         ^        */
    constexpr auto v = std::ranges::cartesian_product_view(a[0], a[1], a[2], a[3]);
    constexpr std::tuple<char const&,
                         char const&,
                         char const&,
                         char const&> last{*(v.end() - 1)};
    std::cout << std::format("{}{}{}{}{}",
                             std::get<0>(last),
                             std::get<1>(last),
                             std::get<2>(last),
                             std::get<3>(last), '\n');
}

출력:

long

참고 항목

시작을 가리키는 반복자를 반환합니다
(public member function)
범위의 끝을 나타내는 sentinel을 반환합니다
(customization point object)