std::ranges::concat_view<Views...>::size
| constexpr auto size() vorausgesetzt(sized_range<Views> && ...); |
(1) | (seit C++26) |
| constexpr auto size() const vorausgesetzt(sized_range<const Views> && ...); |
(2) | (seit C++26) |
Gibt die Anzahl der Elemente zurück.
Äquivalent zu 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_ ) ); .
Inhalt |
[bearbeiten] Rückgabewert
Wie oben beschrieben.
[bearbeiten] Komplexität
Konstant.
[bearbeiten] Hinweise
Die Komplexität von concat_view ist konstante Zeit (auch wenn sie in einigen Fällen eine lineare Funktion der Anzahl der verketteten Bereiche ist, die ein statisch bekannter Parameter dieser Ansicht ist), da die Komplexität, wie von den Bereichskonzepten gefordert, formal in Bezug auf die Gesamtzahl der Elemente (die Größe) eines gegebenen Bereichs und nicht auf die statisch bekannten Parameter dieses Bereichs ausgedrückt wird.
[bearbeiten] Beispiel
Die vorläufige Version kann unter 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); }
[bearbeiten] Siehe auch
| (C++20) |
gibt eine Ganzzahl zurück, die der Größe eines Ranges entspricht (Customization Point Objekt) |
| (C++20) |
gibt eine vorzeichenbehaftete Ganzzahl zurück, die der Größe eines Ranges entspricht (Customization Point Objekt) |