std::dynamic_extent
Von cppreference.com
| Definiert in Header <span> |
||
| inline constexpr std::size_t dynamic_extent = std::numeric_limits<std::size_t>::max(); |
(seit C++20) | |
std::dynamic_extent ist eine Konstante vom Typ std::size_t, die im Allgemeinen verwendet wird, um anzuzeigen, dass jeder Typ, der std::dynamic_extent verwendet, seinen Wert (z. B. die Größe) *dynamisch* speichert, anstatt den Wert *statisch* im Typ bekannt zu haben.
Es wird in mehreren Kontexten verwendet
- Um std::span von statischem und dynamischem Ausmaß zu unterscheiden.
|
(seit C++23) |
|
(seit C++26) |
[bearbeiten] Hinweis
Da std::size_t ein vorzeichenloser Typ ist, ist eine äquivalente Definition
inline constexpr std::size_t dynamic_extent = -1;
Siehe Ganzzahlige Konvertierungen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <array> #include <cassert> #include <cstddef> #include <iostream> #include <span> #include <string_view> #include <vector> int main() { auto print = [](std::string_view const name, std::size_t ex) { std::cout << name << ", "; if (std::dynamic_extent == ex) std::cout << "dynamic extent\n"; else std::cout << "static extent = " << ex << '\n'; }; int a[]{1, 2, 3, 4, 5}; std::span span1{a}; print("span1", span1.extent); std::span<int, std::dynamic_extent> span2{a}; print("span2", span2.extent); std::array ar{1, 2, 3, 4, 5}; std::span span3{ar}; print("span3", span3.extent); std::vector v{1, 2, 3, 4, 5}; std::span span4{v}; print("span4", span4.extent); }
Ausgabe
span1, static extent = 5 span2, dynamic extent span3, static extent = 5 span4, dynamic extent
[bearbeiten] Siehe auch
| (C++20) |
eine nicht besitzende Ansicht über eine zusammenhängende Sequenz von Objekten (class template) |
| (C++23) |
ein Deskriptor eines multidimensionalen Indexraums eines bestimmten Rangs (class template) |