std::ranges:: views:: join_with, std::ranges:: join_with_view
|
Definido en el encabezado
<ranges>
|
||
|
template
<
ranges::
input_range
V,
ranges::
forward_range
Pattern
>
requiere
ranges::
view
<
V
>
&&
|
(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 */
|
(desde C++23) | |
|
template
<
class
Pattern
>
constexpr /* adaptador de rango de cierre */ join_with ( Pattern && pattern ) ; |
(desde C++23) | |
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.
join_with_view
modela
input_range
.
join_with_view
modela
forward_range
cuando:
- ranges:: range_reference_t < V > es una referencia, y
-
Vy ranges:: range_reference_t < V > modelan cada unoforward_range.
join_with_view
modela
bidirectional_range
cuando:
- ranges:: range_reference_t < V > es una referencia,
-
V, ranges:: range_reference_t < V > , yPatternmodelan cada unobidirectional_range, y -
ranges::
range_reference_t
<
V
>
y
Patternmodelan cada unocommon_range.
join_with_view
modela
common_range
cuando:
- ranges:: range_reference_t < V > es una referencia, y
-
Vy ranges:: range_reference_t < V > modelan cada unoforward_rangeycommon_range.
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
|
(C++20)
|
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) |