Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | ranges‎ | iota view
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
constexpr auto size() const

    vorausgesetzt (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 beschränkt ist.

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

Inhalt

[editieren] Rückgabewert

Wenn einer von W und Bound kein integer-ähnlicher Typ 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.

[editieren] 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()); // Error: size() is not present since “u” is unbounded
}

[editieren] 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-Klassen-Typen ablehnen akzeptieren, wenn möglich

[editieren] Siehe auch

gibt eine Ganzzahl zurück, die der Größe eines Ranges entspricht
(Customization Point Objekt)[edit]
gibt eine vorzeichenbehaftete Ganzzahl zurück, die der Größe eines Ranges entspricht
(Customization Point Objekt)[edit]