Standardbibliothek-Header <experimental/ranges/range>
Von cppreference.com
< cpp | header | experimental
Dieser Header ist Teil der ranges Bibliothek.
Inhalt |
[bearbeiten] Range-Konzepte
| Definiert im Namespace
std::experimental::ranges | |
spezifiziert, dass ein Typ ein Range ist, d. h. er stellt einen begin-Iterator und ein end-Sentinel bereit(concept) | |
| spezifiziert, dass ein Range seine Größe in konstanter Zeit kennt (concept) | |
| spezifiziert, dass ein Range ein View ist, d. h. er hat konstante Zeit für Kopie/Verschiebung/Zuweisung (concept) | |
| spezifiziert, dass ein Range identische Iterator- und Sentinel-Typen hat (concept) | |
spezifiziert einen Bereich, dessen Iterator-Typ InputIterator erfüllt(concept) | |
spezifiziert einen Bereich, dessen Iterator-Typ OutputIterator erfüllt(concept) | |
spezifiziert einen Bereich, dessen Iterator-Typ ForwardIterator erfüllt(concept) | |
spezifiziert einen Bereich, dessen Iterator-Typ BidirectionalIterator erfüllt(concept) | |
spezifiziert einen Bereich, dessen Iterator-Typ RandomAccessIterator erfüllt(concept) | |
[bearbeiten] Range-Zugriff
| Definiert im Namespace
std::experimental::ranges | |
| gibt einen Iterator zum Anfang eines Ranges zurück (customization point object) | |
| gibt einen Iterator zum Anfang eines Bereichs zurück (customization point object) | |
| gibt einen Reverse-Iterator zu einem Range zurück (customization point object) | |
| gibt einen Reverse-End-Iterator zu einem Range zurück (customization point object) | |
[bearbeiten] Range-Primitive
| Definiert im Namespace
std::experimental::ranges | |
| erhält die Größe eines Bereichs, dessen Größe in konstanter Zeit berechnet werden kann (Anpassungspunkt-Objekt) | |
| prüft, ob ein Range leer ist (customization point object) | |
| ruft einen Zeiger auf den Anfang eines zusammenhängenden Ranges ab (customization point object) | |
| erhält die Iterator- und Sentinel-Typen eines Bereichs (alias template) | |
[bearbeiten] Synopsis
#include <experimental/ranges/iterator> namespace std { namespace experimental { namespace ranges { inline namespace v1 { namespace { constexpr /* unspecified */ begin = /* unspecified */; constexpr /* unspecified */ end = /* unspecified */; constexpr /* unspecified */ cbegin = /* unspecified */; constexpr /* unspecified */ cend = /* unspecified */; constexpr /* unspecified */ rbegin = /* unspecified */; constexpr /* unspecified */ rend = /* unspecified */; constexpr /* unspecified */ crbegin = /* unspecified */; constexpr /* unspecified */ crend = /* unspecified */; } namespace { constexpr /* unspecified */ size = /* unspecified */; constexpr /* unspecified */ empty = /* unspecified */; constexpr /* unspecified */ data = /* unspecified */; constexpr /* unspecified */ cdata = /* unspecified */; } template <class T> using iterator_t = decltype(ranges::begin(declval<T&>())); template <class T> using sentinel_t = decltype(ranges::end(declval<T&>())); template <class> constexpr bool disable_sized_range = false; template <class T> struct enable_view { }; struct view_base { }; template <class T> concept bool Range = /* see definition */; template <class T> concept bool SizedRange = /* see definition */; template <class T> concept bool View = /* see definition */; template <class T> concept bool BoundedRange = /* see definition */; template <class T> concept bool InputRange = /* see definition */; template <class R, class T> concept bool OutputRange = /* see definition */; template <class T> concept bool ForwardRange = /* see definition */; template <class T> concept bool BidirectionalRange = /* see definition */; template <class T> concept bool RandomAccessRange = /* see definition */; }}}}