Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rangos
 
 
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 la 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_)
);

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)