Namespaces
Variants

std::ranges::slide_view<V>:: size

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

Devuelve el número de elementos.

Sea base_ y n_ la vista subyacente y el "tamaño de ventana" respectivamente. Equivalente a

auto sz = ranges::distance(base_) - n_ + 1;
if (sz < 0)
    sz = 0;
return /*to-unsigned-like*/(sz);

Valor de retorno

El número de elementos. Es igual a 0 , si el número de elementos ( ranges:: size ( base_ ) ) en la vista subyacente base_ es menor que el "tamaño de ventana" n_ .

Ejemplo

#include <forward_list>
#include <iostream>
#include <list>
#include <ranges>
int main()
{
    constexpr static auto v = {1, 2, 3, 4, 5, 6};
    constexpr int width1{4};
    constexpr auto view1{std::views::slide(v, width1)};
    static_assert(view1.size() == 3);
    static_assert(view1.size() == (v.size() - width1 + 1));
    constexpr int width2{8};
    constexpr auto view2{std::views::slide(v, width2)};
    // la ventana es demasiado ancha, por lo que view2 no tiene elementos:
    static_assert(view2.size() == 0);
    std::forward_list forward_list = v;
    const auto view3{std::views::slide(forward_list, width1)};
//  auto x = view3.size(); // error: la restricción sized_range no se satisface
    std::list list = v;
    const auto view4{std::views::slide(list, width1)};
    std::cout << view4.size() << '\n'; // imprime 3
}

Salida:

3

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)