std::ranges::concat_view<Views...>:: size
|
||||||||||||||||||||||
| Range primitives | |||||||
|
|||||||
| Range concepts | |||||||||||||||||||
|
|||||||||||||||||||
| Range factories | |||||||||
|
|||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||
| Helper items | |||||||||||||||||
|
|
||||||||||||||||
| Member functions | ||||
|
concat_view::size
|
||||
| Deduction guides | ||||
| Iterator | ||||
| Member functions | ||||
| Non-member functions | ||||
|
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
|
(C++20)
|
gibt einen ganzzahligen Wert zurück, der der Größe eines Ranges entspricht
(Anpassungspunktobjekt) |
|
(C++20)
|
gibt einen vorzeichenbehafteten ganzzahligen Wert zurück, der der Größe eines Ranges entspricht
(Anpassungspunktobjekt) |