Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
Definido en el encabezado <ranges>
template < ranges:: input_range V, ranges:: forward_range Pattern >

requiere 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) (desde C++23)
namespace views {

inline constexpr /* no especificado */ join_with = /* no especificado */ ;

}
(2) (desde C++23)
Firma de llamada
template < ranges:: viewable_range R, class Pattern >

requiere /* ver más abajo */

constexpr ranges:: view auto join_with ( R && r, Pattern && pattern ) ;
(desde C++23)
template < class Pattern >
constexpr /* adaptador de rango de cierre */ join_with ( Pattern && pattern ) ;
(desde C++23)
1) Un adaptador de rango que representa una view que consiste en la secuencia obtenida al aplanar una vista de rangos, con cada elemento del delimitador insertado entre los elementos de la vista. El delimitador puede ser un elemento único o una vista de elementos.
Para la definición de /*concatable*/ , véase std::ranges::concat_view .
2) RangeAdaptorObject . La expresión views :: join_with ( e, f ) es equivalente-expresión a join_with_view ( e, f ) para cualesquiera subexpresiones adecuadas e y f .

join_with_view modela input_range .

join_with_view modela forward_range cuando:

join_with_view modela bidirectional_range cuando:

join_with_view modela common_range cuando:

Contenidos

Tipos anidados

Tipo Definición
InnerRng ranges:: range_reference_t < V >
( tipo miembro solo para exposición* )

Miembros de datos

Miembro Definición
V base_ la vista subyacente (adaptada)
( objeto miembro solo para exposición* )
Pattern pattern_ el objeto patrón
( objeto miembro solo para exposición* )
non-propagating-cache  < ranges:: iterator_t < V >> outer_it_
(presente solo si V no modela forward_range )
la caché del iterador externo
( objeto miembro solo para exposición* )
non-propagating-cache  < std:: remove_cv_t < InnerRng  >> inner_
(presente solo si std:: is_reference_v < InnerRng  > es false )
la caché del rango interno
( objeto miembro solo para exposición* )

Funciones miembro

construye un join_with_view
(función miembro pública)
devuelve una copia de la vista subyacente (adaptada)
(función miembro pública)
devuelve un iterador al inicio
(función miembro pública)
devuelve un iterador o un centinela al final
(función miembro pública)
Heredado de std::ranges::view_interface
devuelve si la vista derivada está vacía, proporcionado solo si satisface sized_range o forward_range
(función miembro pública de std::ranges::view_interface<D> )
(C++23)
devuelve un iterador constante al inicio del rango
(función miembro pública de std::ranges::view_interface<D> )
(C++23)
devuelve un centinela para el iterador constante del rango
(función miembro pública de std::ranges::view_interface<D> )
devuelve si la vista derivada no está vacía, proporcionado solo si ranges::empty es aplicable a ella
(función miembro pública de std::ranges::view_interface<D> )
devuelve el primer elemento en la vista derivada, proporcionado si satisface forward_range
(función miembro pública de std::ranges::view_interface<D> )
devuelve el último elemento en la vista derivada, proporcionado solo si satisface bidirectional_range y common_range
(función miembro pública de std::ranges::view_interface<D> )

Guías de deducción

Clases anidadas

el tipo de iterador
( clase de plantilla miembro solo para exposición* )
el tipo de centinela
( clase de plantilla miembro solo para exposición* )

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_ranges_join_with 202202L (C++23) std::ranges::join_with_view

Ejemplo

#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';
}

Salida:

This is a test.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 4074 C++23 join_with_view estaba sub-restringido actualizadas las restricciones

Véase también

una view que consiste en la secuencia obtenida al aplanar una view de range s
(plantilla de clase) (objeto adaptador de rango)
una view que consiste en la concatenación de las vistas adaptadas
(plantilla de clase) (objeto punto de personalización)