Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
constexpr auto size ( ) const

erfordert ( std:: same_as < W, Bound > && /*advanceable*/ < W > ) ||
( /*is-integer-like*/ < W > && /*is-integer-like*/ < Bound > ) ||

std:: sized_sentinel_for < Bound, W > ;
(seit C++20)

Gibt die Größe der Ansicht zurück, falls die Ansicht begrenzt ist.

Für die Definitionen von /*advanceable*/ und /*is-integer-like*/ siehe advanceable bzw. is-integer-like .

Inhaltsverzeichnis

Rückgabewert

Wenn keiner von W und Bound ein integer-like type ist, gibt to-unsigned-like  ( bound_ - value_  ) zurück.

Andernfalls gibt ( 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_  )
zurück.

Beispiel

#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()); // Fehler: size() ist nicht vorhanden, da "u" unbegrenzt ist
}

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3610 C++20 size könnte Integer-Class-Typen ablehnen akzeptieren wenn möglich

Siehe auch

gibt einen ganzzahligen Wert zurück, der der Größe eines Ranges entspricht
(Anpassungspunktobjekt)
gibt einen vorzeichenbehafteten ganzzahligen Wert zurück, der der Größe eines Ranges entspricht
(Anpassungspunktobjekt)