std::ranges::views::as_input, std::ranges::as_input_view
Von de.cppreference.net
| Definiert im Header <ranges>
|
||
template< ranges::input_range V >
requires ranges::view<V>
class as_input_view
: public ranges::view_interface<as_input_view<V>>
|
(1) | (seit C++26) |
namespace views {
inline constexpr /* unspecified */ as_input = /* unspecified */;
}
|
(2) | (seit C++26) |
| Aufrufsignatur |
||
template< ranges::viewable_range R >
requires /* see below */
constexpr ranges::view auto as_input( R&& r );
|
(seit C++26) | |
1) Ein Bereichsadapter, der eine Ansicht einer zugrunde liegenden view als input_range-only und keine common_range darstellt.
2) RangeAdaptorObject. Sei
e ein Unterausdruck, und sei T decltype(e). Dann ist der Ausdruck views::as_input(e) ausdrucksäquivalent zu:
views::all(e), wenn es ein wohldefinierter Ausdruck ist und alle der folgenden Bedingungentruesind:Tmodelliert input_range,Terfüllt nicht common_range, undTerfüllt nicht forward_range.
as_input_view{e}andernfalls.
Folglich modelliert as_input_view niemals Bereichskonzepte, die stärker als input_range sind. Insbesondere modelliert es alle diese nicht:
Zusätzlich modelliert as_input_view kein common_range. Es modelliert jedoch borrowed_range, constant_range und sized_range, wenn die zugrunde liegende view V die entsprechenden Konzepte modelliert.
Datenelemente
| Element | Beschreibung |
V base_ (privat)
|
die zugrunde liegende view (nur zur Darstellung Mitgliedsobjekt*) |
Mitgliedsfunktionen
erstellt ein as_input_view (öffentliche Mitgliedsfunktion) | |
| gibt eine Kopie der zugrunde liegenden (angepassten) view zurück (öffentliche Mitgliedsfunktion) | |
| gibt einen Iterator zum Anfang zurück (öffentliche Mitgliedsfunktion) | |
| gibt einen Iterator oder einen Sentinel zum Ende zurück (öffentliche Mitgliedsfunktion) | |
| gibt die Anzahl der Elemente zurück. Wird nur bereitgestellt, wenn der zugrunde liegende (angepasste) Bereich sized_range erfüllt. (öffentliche Mitgliedsfunktion) | |
Geerbt von ranges::view_interface | |
| gibt zurück, ob die abgeleitete Ansicht leer ist, wird nur bereitgestellt, wenn sie sized_range oder forward_range erfüllt (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
(C++23) |
gibt einen konstanten Iterator zum Anfang des Bereichs zurück (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
|
(C++23) |
gibt einen Sentinel für den konstanten Iterator des Bereichs zurück (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
|
| gibt zurück, ob die abgeleitete Ansicht nicht leer ist, wird nur bereitgestellt, wenn ranges::empty darauf anwendbar ist (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
| erhält die Adresse der Daten der abgeleiteten Ansicht, wird nur bereitgestellt, wenn ihr Iteratortyp contiguous_iterator erfüllt (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
| gibt das erste Element in der abgeleiteten Ansicht zurück, wird nur bereitgestellt, wenn sie forward_range erfüllt (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
| gibt das letzte Element in der abgeleiteten Ansicht zurück, wird nur bereitgestellt, wenn sie bidirectional_range und common_range erfüllt (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
gibt das n-te Element in der abgeleiteten Ansicht zurück, wird nur bereitgestellt, wenn sie random_access_range erfüllt (öffentliche Mitgliedsfunktion von std::ranges::view_interface<D>)
| |
std::ranges::as_input_view::as_input_view
as_input_view() requires std::default_initializable<V> = default;
|
(1) | (seit C++26) |
constexpr explicit as_input_view( V base );
|
(2) | (seit C++26) |
1) Wertinitialisiert
base_ über seinen Standard-Member-Initialisierer (= V()).2) Initialisiert
base_ mit std::move(base).Parameter
| base | - | eine view |
std::ranges::as_input_view::base
constexpr V base() const& requires std::copy_constructible<V>;
|
(1) | (seit C++26) |
constexpr V base() &&;
|
(2) | (seit C++26) |
1) Kopierkonstruiert das Ergebnis aus der zugrunde liegenden view. Äquivalent zu
return base_;.2) Verschiebungskonstruiert das Ergebnis aus der zugrunde liegenden view. Äquivalent zu
return std::move(base_);.
std::ranges::as_input_view::begin
constexpr auto begin() requires (!__simple_view<V>);
|
(1) | (seit C++26) |
constexpr auto begin() const requires ranges::range<const V>;
|
(2) | (seit C++26) |
1) Äquivalent zu
return /*iterator*/<false>(ranges::begin(base_));2) Äquivalent zu
return /*iterator*/<true>(ranges::begin(base_));
std::ranges::as_input_view::end
constexpr auto end() requires (!__simple_view<V>);
|
(1) | (seit C++26) |
constexpr auto end() const requires ranges::range<const V>;
|
(2) | (seit C++26) |
1,2) Äquivalent zu
return ranges::end(base_);
std::ranges::as_input_view::size
constexpr auto size() requires ranges::sized_range<V>;
|
(1) | (seit C++26) |
constexpr auto size() const requires ranges::sized_range<const V>;
|
(2) | (seit C++26) |
1,2) Äquivalent zu
return ranges::size(base_);Ableitungsleitfäden
template< class R >
as_input_view( R&& ) -> as_input_view<views::all_t<R>>;
|
(seit C++26) | |
Verschachtelte Klassen
| der Iteratortyp (nur zur Darstellung Mitgliedsklassenvorlage*) |
Hilfsvorlagen
template< class T >
constexpr bool enable_borrowed_range<std::ranges::as_input_view<T>> =
ranges::enable_borrowed_range<T>;
|
(seit C++26) | |
Diese Spezialisierung von std::ranges::enable_borrowed_range lässt as_input_view borrowed_range erfüllen, wenn die zugrunde liegende view es erfüllt.
Anmerkungen
as_input_view kann nützlich sein, um den Overhead zu vermeiden, der erforderlich ist, um Unterstützung für die Operationen zu bieten, die für eine größere Iteratorstärke benötigt werden.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_as_input |
202502L |
(C++26) | std::ranges::as_input_view
|
Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
Siehe auch
(C++20) |
spezifiziert einen Bereich, dessen Iteratortyp input_iterator erfüllt (Konzept) |
| konvertiert eine view in eine common_range (Klassenvorlage) (Bereichsadapterobjekt) |