Namespaces
Variants

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

Von de.cppreference.net
 
 
Ranges-Bibliothek
Range-Adaptoren
 
 
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>;
(seit C++20)

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

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

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)