Namespaces
Variants

std::ranges::views::as_input, std::ranges::as_input_view

Von de.cppreference.net
 
 
Ranges-Bibliothek
Bereichsadapter
 
 
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 Bedingungen true sind:
  • 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

Siehe auch

spezifiziert einen Bereich, dessen Iteratortyp input_iterator
erfüllt (Konzept)
konvertiert eine view in eine common_range
(Klassenvorlage) (Bereichsadapterobjekt)