Namespaces
Variants

std::ranges::enumerate_view<V>:: size

From cppreference.net
Ranges library
Range adaptors
constexpr auto size ( ) requires ranges:: sized_range < V > ;
(1) (desde C++23)
constexpr auto size ( ) const requires ranges:: sized_range < const V > ;
(2) (desde C++23)

Devuelve el número de elementos. Equivalente a return ranges:: size ( base_ ) ; , donde base_ es la vista subyacente.

Contenidos

Parámetros

(ninguno)

Valor de retorno

El número de elementos.

Ejemplo

#include <cassert>
#include <forward_list>
#include <ranges>
#include <string_view>
int main()
{
    constexpr static auto v1 = {1, 2, 3, 4, 5};
    constexpr auto ev1{v1 | std::views::enumerate};
    static_assert(ev1.size() == 5);
    static_assert(std::ranges::sized_range<decltype(v1)>);
    auto v2 = std::forward_list{1, 2, 3, 4, 5};
    auto ev2 {v2 | std::views::enumerate};
    static_assert(not std::ranges::sized_range<decltype(v2)>);
    // auto size = ev2.size(); // Error: v2 is not a sized range
    assert(std::ranges::distance(v2) == 5); // OK, distance does not require sized
                                            // range, but has O(N) complexity here
}

Véase también

devuelve un entero igual al tamaño de un rango
(objeto de punto de personalización)
devuelve un entero con signo igual al tamaño de un rango
(objeto de punto de personalización)