Namespaces
Variants

std::ranges:: views:: join_with, std::ranges:: join_with_view

From cppreference.net
Ranges library
Range adaptors
Definiert im Header <ranges>
template < ranges:: input_range V, ranges:: forward_range Pattern >

requires ranges:: view < V > &&
ranges:: input_range < ranges:: range_reference_t < V >> &&
ranges:: view < Pattern > &&
/*concatable*/ < ranges:: range_reference_t < V > , Pattern >
class join_with_view :

ranges:: view_interface < join_with_view < V, Pattern >>
(1) (seit C++23)
namespace views {

inline constexpr /* nicht spezifiziert */ join_with = /* nicht spezifiziert */ ;

}
(2) (seit C++23)
Aufrufsignatur
template < ranges:: viewable_range R, class Pattern >

requires /* siehe unten */

constexpr ranges:: view auto join_with ( R && r, Pattern && pattern ) ;
(seit C++23)
template < class Pattern >
constexpr /* Bereichsadapter-Abschluss */ join_with ( Pattern && pattern ) ;
(seit C++23)
1) Ein Bereichsadapter, der eine view darstellt, die aus der Sequenz besteht, die durch das Glätten einer Ansicht von Bereichen erhalten wird, wobei jedes Element des Trennzeichens zwischen den Elementen der Ansicht eingefügt wird. Das Trennzeichen kann ein einzelnes Element oder eine Ansicht 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:

join_with_view modelliert bidirectional_range wenn:

join_with_view modelliert common_range wenn:

Inhaltsverzeichnis

Verschachtelte Typen

Typ Definition
InnerRng ranges:: range_reference_t < V >
( Nur zur Darstellung verwendeter Member-Typ* )

Datenmitglieder

Member Definition
V base_ die zugrunde liegende (adaptierte) Ansicht
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )
Pattern pattern_ das Musterobjekt
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )
non-propagating-cache  < ranges:: iterator_t < V >> outer_it_
(nur vorhanden, wenn V nicht forward_range modelliert)
der Cache des äußeren Iterators
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )
non-propagating-cache  < std:: remove_cv_t < InnerRng  >> inner_
(nur vorhanden, wenn std:: is_reference_v < InnerRng  > false ist)
der Cache des inneren Bereichs
( Nur zur Veranschaulichung verwendetes Mitgliedsobjekt* )

Memberfunktionen

erstellt einen join_with_view
(öffentliche Elementfunktion)
gibt eine Kopie der zugrundeliegenden (adaptierten) Ansicht zurück
(öffentliche Elementfunktion)
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion)
gibt einen Iterator oder Sentinel zum Ende zurück
(öffentliche Elementfunktion)
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
(öffentliche Elementfunktion von std::ranges::view_interface<D> )
(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> )

Ableitungsleitfäden

Geschachtelte Klassen

der Iteratortyp
( Nur zur Darstellung dienende Member-Klassentemplate* )
der Sentineltyp
( Nur zur Darstellung dienende Member-Klassentemplate* )

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_ranges_join_with 202202L (C++23) std::ranges::join_with_view

Beispiel

#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.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 4074 C++23 join_with_view war unterbeschränkt Einschränkungen aktualisiert

Siehe auch

eine view bestehend aus der durch Aufflatten einer view von range s erhaltenen Sequenz
(Klassentemplate) (Range-Adapter-Objekt)
eine view bestehend aus der Verkettung der adaptierten Views
(Klassentemplate) (Customization-Point-Objekt)