Namespaces
Variants

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

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
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.

Sean 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)