Namespaces
Variants

std::ranges::concat_view<Views...>:: size

From cppreference.net
Ranges library
Range adaptors
constexpr auto size ( )
requires ( sized_range < Views > && ... ) ;
(1) (seit C++26)
constexpr auto size ( ) const
requires ( sized_range < const Views > && ... ) ;
(2) (seit C++26)

Gibt die Anzahl der Elemente zurück.

Entspricht return std:: apply
(
[ ] ( auto ... sizes )
{
using CT = ranges:: common_type_t < decltype ( sizes ) ... > ;
return ( make-unsigned-like-t  < CT > ( sizes ) + ... ) ;
} ,
tuple-transform  ( ranges:: size , views_  )
) ;
.

Inhaltsverzeichnis

Rückgabewert

Wie oben beschrieben.

Komplexität

Konstante.

Hinweise

Die Komplexität von concat_view ist konstant (obwohl sie in einigen Fällen eine lineare Funktion der Anzahl der zusammengeführten Bereiche ist, was ein statisch bekannter Parameter dieser Ansicht ist), weil die Zeitkomplexität, wie von den Ranges-Konzepten gefordert, formal in Bezug auf die Gesamtzahl der Elemente (die Größe) eines gegebenen Bereichs ausgedrückt wird und nicht in Bezug auf die statisch bekannten Parameter dieses Bereichs.

Beispiel

Die Vorabversion kann auf Compiler Explorer eingesehen werden.

#include <cassert>
#include <forward_list>
#include <list>
#include <ranges>
int main()
{
    constexpr static auto a = {1, 2};
    constexpr static auto b = {1, 2, 3};
    constexpr static auto c = {1, 2, 3, 4};
    constexpr auto con{std::views::concat(a, b, c)};
    static_assert(std::ranges::sized_range<decltype(con)>);
    static_assert(con.size() == 2 + 3 + 4);
    std::forward_list d = b;
    static_assert(not std::ranges::sized_range<std::forward_list<int>>);
    const auto cat{std::views::concat(b, c, d)};
    static_assert(not std::ranges::sized_range<decltype(cat)>);
//  auto x = cat.size(); // error: cat is not sized_range because of d
    std::list e = c;
    const auto dog{std::views::concat(a, b, e)};
    static_assert(std::ranges::sized_range<decltype(dog)>);
    assert(dog.size() == 2 + 3 + 4);
}

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)