std::ranges:: ref_view
|
Definiert im Header
<ranges>
|
||
|
template
<
ranges::
range
R
>
erfordert
std::
is_object_v
<
R
>
|
(seit C++20) | |
ref_view
ist eine
view
der Elemente eines anderen
range
. Sie umschließt eine Referenz auf diesen
range
.
Inhaltsverzeichnis |
Datenmitglieder
| Mitglied | Beschreibung |
R*
r_
|
ein Zeiger auf den zugrundeliegenden Bereich
( Nur zur Veranschaulichung dienendes Mitgliedsobjekt* ) |
Memberfunktionen
Konstruiert einen
ref_view
, der auf den gegebenen Bereich verweist
(öffentliche Elementfunktion) |
|
|
gibt die Referenz auf den referenzierten Bereich zurück
(öffentliche Elementfunktion) |
|
|
gibt den Startiterator des referenzierten Bereichs zurück
(öffentliche Elementfunktion) |
|
|
gibt den Sentinel des referenzierten Bereichs zurück
(öffentliche Elementfunktion) |
|
|
prüft, ob der referenzierte Bereich leer ist
(öffentliche Elementfunktion) |
|
gibt die Größe des referenzierten
sized_range
zurück
(öffentliche Elementfunktion) |
|
|
(C++26)
|
gibt die ungefähre Größe des referenzierten
approximately_sized_range
zurück
(öffentliche Elementfunktion) |
gibt den Zeiger auf den Anfang des referenzierten
contiguous_range
zurück
(öffentliche Elementfunktion) |
|
Geerbt von std::ranges::view_interface |
|
|
(C++23)
|
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
(C++23)
|
gibt einen Sentinel für den konstanten Iterator des Bereichs zurück
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur wenn
ranges::empty
darauf anwendbar ist
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
gibt das erste Element in der abgeleiteten Ansicht zurück, bereitgestellt wenn sie
forward_range
erfüllt
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
gibt das letzte Element in der abgeleiteten Ansicht zurück, bereitgestellt nur wenn sie
bidirectional_range
und
common_range
erfüllt
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
gibt das
n
te
Element in der abgeleiteten Ansicht zurück, bereitgestellt nur wenn sie
random_access_range
erfüllt
(öffentliche Elementfunktion von
std::ranges::view_interface<D>
)
|
|
std::ranges::ref_view:: ref_view
|
template
<
/*different-from*/
<
ref_view
>
T
>
requires
std::
convertible_to
<
T, R
&
>
&&
|
(seit C++20) | |
Initialisiert
r_
mit
std::
addressof
(
static_cast
<
R
&
>
(
std::
forward
<
T
>
(
t
)
)
)
.
/*different-from*/
<
T, U
>
ist genau dann erfüllt, wenn
std::
remove_cvref_t
<
T
>
und
std::
remove_cvref_t
<
U
>
nicht denselben Typ darstellen, und Überladungen von
_FUN
deklariert sind als
void
_FUN
(
R
&
)
;
void
_FUN
(
R
&&
)
=
delete
;
.
Parameter
| t | - | zu referenzierender Bereich |
std::ranges::ref_view:: begin
|
constexpr
ranges::
iterator_t
<
R
>
begin
(
)
const
;
|
(seit C++20) | |
Gibt
ranges::
begin
(
*
r_
)
zurück.
std::ranges::ref_view:: end
|
constexpr
ranges::
sentinel_t
<
R
>
end
(
)
const
;
|
(seit C++20) | |
Gibt
ranges::
end
(
*
r_
)
zurück.
std::ranges::ref_view:: empty
|
constexpr
bool
empty
(
)
const
requires requires { ranges:: empty ( * r_ ) ; } ; |
(seit C++20) | |
Gibt
ranges::
empty
(
*
r_
)
zurück.
std::ranges::ref_view:: size
|
constexpr
auto
size
(
)
const
requires ranges:: sized_range < R > ; |
(seit C++20) | |
Gibt
ranges::
size
(
*
r_
)
zurück.
std::ranges::ref_view:: reserve_hint
|
constexpr
auto
size
(
)
const
requires ranges :: approximately_sized_range < R > ; |
(seit C++26) | |
Gibt
ranges
::
reserve_hint
(
*
r_
)
zurück.
std::ranges::ref_view:: data
|
constexpr
auto
data
(
)
const
requires ranges:: contiguous_range < R > ; |
(seit C++20) | |
Gibt
ranges::
data
(
*
r_
)
zurück.
Deduktionsanleitungen
|
template
<
class
R
>
ref_view ( R & ) - > ref_view < R > ; |
(seit C++20) | |
Hilfsvorlagen
|
template
<
class
T
>
constexpr bool enable_borrowed_range < ranges :: ref_view < T >> = true ; |
(seit C++20) | |
Diese Spezialisierung von
std::ranges::enable_borrowed_range
bewirkt, dass
ref_view
die Anforderungen von
borrowed_range
erfüllt.
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_reserve_hint
|
202502L
|
(C++26) |
ranges::approximately_sized_range
und
reserve_hint
|
Beispiel
#include <iostream> #include <ranges> int main() { const std::string s{"cosmos"}; const std::ranges::take_view tv{s, 3}; const std::ranges::ref_view rv{tv}; std::cout << std::boolalpha << "call empty(): " << rv.empty() << '\n' << "call size() : " << rv.size() << '\n' << "call begin(): " << *rv.begin() << '\n' << "call end() : " << *(rv.end() - 1) << '\n' << "call data() : " << rv.data() << '\n' << "call base() : " << rv.base().size() << '\n' // ~> tv.size() << "range-for : "; for (const auto c : rv) std::cout << c; std::cout << '\n'; }
Ausgabe:
call empty(): false call size() : 3 call begin(): c call end() : s call data() : cosmos call base() : 3 range-for : cos
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| P2325R3 | C++20 |
Standardkonstruktor wurde bereitgestellt da
view
muss
default_initializable
sein
|
zusammen mit der Anforderung entfernt |
Siehe auch
|
(C++11)
|
CopyConstructible
und
CopyAssignable
Referenz-Wrapper
(Klassen-Template) |
|
(C++20)
|
eine
view
mit eindeutigem Besitz eines
range
(Klassen-Template) |
|
(C++20)
|
eine
view
die alle Elemente eines
range
enthält
(Alias-Template) (Range-Adapter-Objekt) |