Namespaces
Variants

std::ranges::stride_view<V>:: size

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

Devuelve el número de elementos.

Sea base_ la vista subyacente y stride_ el valor de paso almacenado. Equivalente a:

return /*to-unsigned-like*/(/*div-ceil*/(ranges::distance(base_), stride_));

Contenidos

Parámetros

(ninguno)

Valor de retorno

El número de elementos. El valor devuelto se calcula como si por la expresión

( ranges:: size ( base_ ) / stride_ ) + ( ( ranges:: size ( base_ ) % stride_ ? 1 : 0 ) .

Ejemplo

#include <forward_list>
#include <ranges>
int main()
{
    namespace vs = std::views;
    constexpr static auto v = {1, 2, 3, 4, 5};
    static_assert
    (
        vs::stride(v, 1).size() == 5 and
        vs::stride(v, 2).size() == 3 and
        vs::stride(v, 3).size() == 2 and
        vs::stride(v, 4).size() == 2 and
        vs::stride(v, 5).size() == 1 and
        vs::stride(v, 6).size() == 1
    );
    std::forward_list list{v};
//  auto s = vs::stride(list, 2).size(); // Error: not a sized_range
}

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)