std::ranges::views::join_with, std::ranges::join_with_view
De es.cppreference.net
| Definido en el encabezado <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) | (desde C++23) |
namespace views {
inline constexpr /* unspecified */ join_with = /* unspecified */;
}
|
(2) | (desde C++23) |
| Signatura de llamada |
||
template< ranges::viewable_range R, class Pattern >
requires /* see below */
constexpr ranges::view auto join_with( R&& r, Pattern&& pattern );
|
(desde C++23) | |
template< class Pattern >
constexpr /* range adaptor closure */ join_with( Pattern&& pattern );
|
(desde C++23) | |
1) Un adaptador de rango que representa una vista 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 solo elemento o una vista de elementos.
Para la definición de
/*concatable*/, consulte std::ranges::concat_view.2) RangeAdaptorObject. La expresión
views::join_with(e, f) es expression-equivalent a join_with_view(e, f) para cualquier subexpresión adecuada e y f.join_with_view modela input_range.
join_with_view modela forward_range cuando:
ranges::range_reference_t<V>es una referencia, yVyranges::range_reference_t<V>modelan cada uno forward_range.
join_with_view modela bidirectional_range cuando:
ranges::range_reference_t<V>es una referencia,V,ranges::range_reference_t<V>, yPatternmodelan cada uno bidirectional_range, yranges::range_reference_t<V>yPatternmodelan cada uno common_range.
join_with_view modela common_range cuando:
ranges::range_reference_t<V>es una referencia, yVyranges::range_reference_t<V>modelan cada uno forward_range y common_range.
Tipos anidados
| Tipo | Definición |
InnerRng
|
ranges::
range_reference_t
<
V
>
( tipo miembro solo para exposición* ) |
Miembros de datos
| Miembro | Descripción |
V base_
|
la vista subyacente (adaptada) (objeto miembro de solo exposición*) |
Pattern pattern_
|
el objeto patrón (objeto miembro de solo 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 de solo 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 de solo 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 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
Ejecutar este código
#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) |