Namespaces
Variants

std::ranges::iota_view<W, Bound>::size

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
constexpr auto size() const
    requires (std::same_as<W, Bound> && /*advanceable*/<W>) ||
             (/*is-integer-like*/<W> && /*is-integer-like*/<Bound>) ||
             std::sized_sentinel_for<Bound, W>;
(desde C++20)

Devuelve el tamaño de la vista si la vista está acotada.

Para las definiciones de /*advanceable*/ y /*is-integer-like*/, consúltese advanceable y is-integer-like respectivamente.

Valor de retorno

Si alguno de W y Bound no es un tipo similar a entero , retorna to-unsigned-like  ( bound_ - value_  ) .

De lo contrario, retorna ( value_ < 0 ) ?
(
( bound_ < 0 ) ?
to-unsigned-like  ( - value_  ) - to-unsigned-like  ( - bound_  ) :
to-unsigned-like  ( bound_  ) + to-unsigned-like  ( - value_  )
) :
to-unsigned-like  ( bound_  ) - to-unsigned-like  ( value_  )
.

Ejemplo

#include <cassert>
#include <ranges>
int main()
{
    unsigned initial_value{1}, bound{5};
    auto i{std::views::iota(initial_value, bound)};
    assert(i.size() == bound - initial_value and i.size() == 4);
    auto u{std::views::iota(8)};
    // assert(u.size()); // Error: size() no está presente ya que "u" es ilimitado
}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3610 C++20 size podría rechazar tipos integer-class aceptar si es posible

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)