Namespaces
Variants

std::ranges::zip_view<Views...>:: size

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

Devuelve el número de elementos en el zip_view . Se proporciona solo si cada rango subyacente (adaptado) satisface sized_range .

Equivalente a:

return std::apply
(
    [](auto... sizes)
    {
        using CT = /*make-unsigned-like-t*/<std::common_type_t<decltype(sizes)...>>;
        return ranges::min({CT(sizes)...});
    },
    /*tuple-transform*/(ranges::size, views_)
);

Contenidos

Parámetros

(ninguno)

Valor de retorno

El número de elementos, que es el tamaño mínimo entre todos los tamaños de las view s adaptadas.

Ejemplo

#include <algorithm>
#include <cassert>
#include <deque>
#include <forward_list>
#include <ranges>
#include <vector>
int main()
{
    auto x = std::vector{1, 2, 3, 4, 5};
    auto y = std::deque{'a', 'b', 'c'};
    auto z = std::forward_list{1., 2.};
    auto v1 = std::views::zip(x, y);
    assert(v1.size() == std::min(x.size(), y.size()));
    assert(v1.size() == 3);
    [[maybe_unused]] auto v2 = std::views::zip(x, z);
//  auto sz = v2.size(); // Error, v2 no tiene size():
    static_assert(not std::ranges::sized_range<decltype(z)>);
}

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)