Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | ranges
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
Definiert in der Header-Datei <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 /* unspecified */ join_with = /* unspecified */;

}
(2) (seit C++23)
Aufruf-Signatur
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 /* 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

join_with_view modelliert bidirectional_range, wenn

join_with_view modelliert common_range, wenn

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) [edit]
gibt eine Kopie der zugrunde liegenden (angepassten) View zurück
(public member function) [edit]
gibt einen Iterator zum Anfang zurück
(öffentliche Member-Funktion) [edit]
gibt einen Iterator oder Sentinel zum Ende zurück
(öffentliche Member-Funktion) [edit]
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>) [edit]
(C++23)
gibt einen konstanten Iterator zum Anfang des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
(C++23)
gibt ein Sentinel für den konstanten Iterator des Bereichs zurück
(public member function of std::ranges::view_interface<D>) [edit]
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>) [edit]
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>) [edit]
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>) [edit]

[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

#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

ein view, der aus der Sequenz besteht, die durch Abflachung eines view von ranges gebildet wird
(Klassen-Template) (Range-Adaptor-Objekt)[edit]
ein view, der aus der Verkettung der adaptierten Views besteht
(Klassen-Template) (Customization Point Objekt)[edit]