std::ranges::views::join_with, std::ranges::join_with_view
Von cppreference.com
| Definiert in der Header-Datei <ranges> |
||
| template< ranges::input_range V, ranges::forward_range Pattern > requires ranges::view<V> && |
(1) | (seit C++23) |
| namespace views { inline constexpr /* unspecified */ join_with = /* unspecified */; |
(2) | (seit C++23) |
| Aufruf-Signatur |
||
| template< ranges::viewable_range R, class Pattern > requires /* siehe unten */ |
(seit C++23) | |
| template< class Pattern > constexpr /* range adaptor closure */ join_with( Pattern&& pattern ); |
(seit C++23) | |
1) Ein Range-Adaptor, der eine
view repräsentiert, die aus der Sequenz besteht, die durch das Abflachen einer View von Ranges erhalten wird, wobei jedes Element des Trennzeichens zwischen den Elementen der View eingefügt wird. Das Trennzeichen kann ein einzelnes Element oder eine View von Elementen sein. Für die Definition von /*concatable*/ siehe std::ranges::concat_view.
2) RangeAdaptorObject. Der Ausdruck views::join_with(e, f) ist ausdrucksäquivalent zu join_with_view(e, f) für beliebige geeignete Teilausdrücke e und f.
join_with_view modelliert input_range.
join_with_view modelliert forward_range, wenn
- ranges::range_reference_t<V> eine Referenz ist und
-
Vund ranges::range_reference_t<V>> jeweilsforward_rangemodellieren.
join_with_view modelliert bidirectional_range, wenn
- ranges::range_reference_t<V> eine Referenz ist,
-
V, ranges::range_reference_t<V>> undPatternjeweilsbidirectional_rangemodellieren und - ranges::range_reference_t<V> und
Patternjeweilscommon_rangemodellieren.
join_with_view modelliert common_range, wenn
- ranges::range_reference_t<V> eine Referenz ist und
-
Vund ranges::range_reference_t<V>> jeweilsforward_rangeundcommon_rangemodellieren.
Inhalt |
[bearbeiten] Verschachtelte Typen
| Typ | Definition |
InnerRng |
ranges::range_reference_t<V> ((nur zur Veranschaulichung)*) |
[bearbeiten] Datenelemente
| Mitglied | Definition |
V base_ |
die zugrunde liegende (angepasste) View ((exposition-only member object*) |
Pattern pattern_ |
das Musterobjekt ((exposition-only member object*) |
non-propagating-cache <ranges::iterator_t<V>> outer_it_(vorhanden nur, wenn V nicht forward_range modelliert)
|
der Cache des äußeren Iterators ((exposition-only member object*) |
non-propagating-cache <std::remove_cv_t<InnerRng >> inner_(vorhanden nur, wenn std::is_reference_v< InnerRng > false ist)
|
der Cache des inneren Ranges ((exposition-only member object*) |
[bearbeiten] Member-Funktionen
konstruiert eine join_with_view(öffentliche Member-Funktion) | |
| gibt eine Kopie der zugrunde liegenden (angepassten) View zurück (public member function) | |
| gibt einen Iterator zum Anfang zurück (öffentliche Member-Funktion) | |
| gibt einen Iterator oder Sentinel zum Ende zurück (öffentliche Member-Funktion) | |
Geerbt von std::ranges::view_interface | |
gibt zurück, ob die abgeleitete Ansicht leer ist, bereitgestellt nur, wenn sie sized_range oder forward_range erfüllt(public member function of std::ranges::view_interface<D>) | |
| (C++23) |
gibt einen konstanten Iterator zum Anfang des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| (C++23) |
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück (public member function of std::ranges::view_interface<D>) |
| gibt zurück, ob die abgeleitete Ansicht nicht leer ist, bereitgestellt nur, wenn ranges::empty darauf anwendbar ist (public member function of std::ranges::view_interface<D>) | |
gibt das erste Element in der abgeleiteten View zurück, bereitgestellt, wenn sie forward_range erfüllt(öffentliche Member-Funktion von std::ranges::view_interface<D>) | |
gibt das letzte Element in der abgeleiteten View zurück, nur bereitgestellt, wenn sie bidirectional_range und common_range erfüllt(öffentliche Member-Funktion von std::ranges::view_interface<D>) | |
[bearbeiten] Deduktionshilfen
[bearbeiten] Verschachtelte Klassen
| der Iterator-Typ ((nur zur Veranschaulichung Exposition-only Member-Klassenschablone)*) | |
| der Sentinel-Typ ((nur zur Veranschaulichung Exposition-only Member-Klassenschablone)*) |
[bearbeiten] Hinweise
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_ranges_join_with |
202202L |
(C++23) | std::ranges::join_with_view
|
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <ranges> #include <string_view> #include <vector> int main() { using namespace std::literals; std::vector v{"This"sv, "is"sv, "a"sv, "test."sv}; auto joined = v | std::views::join_with(' '); for (auto c : joined) std::cout << c; std::cout << '\n'; }
Ausgabe
This is a test.
[bearbeiten] 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 |
|---|---|---|---|
| LWG 4074 | C++23 | join_with_view war unterparametrisiert |
die Constraints wurden aktualisiert |
[bearbeiten] Siehe auch
| (C++20) |
ein view, der aus der Sequenz besteht, die durch Abflachung eines view von ranges gebildet wird(Klassen-Template) (Range-Adaptor-Objekt) |
ein view, der aus der Verkettung der adaptierten Views besteht(Klassen-Template) (Customization Point Objekt) |