Espacios de nombres
Variantes
Acciones

std::ranges::views::transform, std::ranges::transform_view

De cppreference.com
< cpp‎ | ranges
 
 
Biblioteca de rangos
Adaptadores de rangos
 
 
Definido en el archivo de encabezado <ranges>
template<ranges::input_range V,

          std::copy_constructible F >
  requires ranges::view<V>&&
           std::is_object_v<F>&&
           std::regular_invocable<F&, ranges::range_reference_t<V>>&&
           /* invoke_result_t<F&, range_reference_t<V>>& es un tipo válido */

class transform_view :publicranges::view_interface<transform_view<V, F>>
(1) (desde C++20)
namespace views {

    inlineconstexpr/*no especificado*/ transform =/*no especificado*/;

}
(2) (desde C++20)
Signatura de la llamada
template<ranges::viewable_range R, class F >

    requires /* véase a continuación */

constexprranges::viewauto transform( R&& r, F&& fun );
(desde C++20)
template<class F >
constexpr/*cierre de adaptador de rango*/ transform( F&& fun );
(desde C++20)
1) Un adaptador de rango que representa una vista (view) de una secuencia subyacente después de aplicar una función de transformación a cada elemento.
2)Objeto adaptador de rango. La expresión views::transform(e, f) es equivalente en expresión a transform_view(e, f) para cualquier subexpresión e y f adecuadas.

transform_view modela los conceptos random_access_range, bidirectional_range, forward_range, input_range, common_range, y sized_range cuando la vista subyacente V modela los conceptos respectivos.

Contenido

[editar]Equivalente en expresión

La expresión e es equivalente-en-expresión a la expresión f, si e y f tienen los mismos efectos, ambas potencialmente lanzan o ambas potencialmente no lanzan (es decir, noexcept(e)==noexcept(f)), y ambas son subexpresiones constantes o ambas no son subexpresiones constantes.

[editar]Funciones miembro

Construye un objeto transform_view
(función miembro pública)[editar]
(C++20)
Devuelve una copia de la vista (adaptada) subyacente.
(función miembro pública)[editar]
(C++20)
Devuelve un iterador al comienzo.
(función miembro pública)[editar]
(C++20)
Devuelve un iterador o un centinela al final.
(función miembro pública)[editar]
(C++20)
Devuelve el número de elementos. Se proporciona solo si el rango (adaptado) subyacente satisface sized_range .
(función miembro pública)[editar]
Heredadas de std::ranges::view_interface
(C++20)
Devuelve si la vista derivada está vacía o no. Se proporciona si la vista derivada satisface forward_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
Devuelve si la vista derivada está vacía o no. Se proporciona si ranges::empty le es aplicable.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el primer elemento en la vista derivada. Se proporciona si la vista derivada satisface forward_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el último elemento en una vista derivada. Se proporciona si la vista derivada satisface bidirectional_range y common_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]
(C++20)
Devuelve el enésimo elemento en la vista derivada. Se proporciona si la vista derivada satisface random_access_range.
(función miembro pública de std::ranges::view_interface<D>)[editar]

[editar]Guías de deducción

[editar]Clases anidadas

(C++20)
El tipo iterador.
(plantilla de clase miembro de solo exposición)
(C++20)
El tipo centinela.
(plantilla de clase miembro de solo exposición)

[editar]Ejemplo

#include <algorithm>#include <cstdio>#include <iterator>#include <ranges>#include <string>   char rot13a(constchar x, constchar a){return a +(x - a +13)%26;}   char rot13(constchar x){if(x >='A'&& x <='Z'){return rot13a(x, 'A');}   if(x >='a'&& x <='z'){return rot13a(x, 'a');}   return x;}   int main(){auto show =[](constunsignedchar x){std::putchar(x);};   std::string in{"cppreference.com\n"}; std::ranges::for_each(in, show); std::ranges::for_each(in | std::views::transform(rot13), show);   std::string out; std::ranges::copy( std::views::transform(in, rot13), std::back_inserter(out)); std::ranges::for_each(out, show); std::ranges::for_each(out | std::views::transform(rot13), show);}

Salida:

cppreference.com pccersrerapr.pbz pccersrerapr.pbz cppreference.com

[editar]Véase también

Aplica una función a un rango de elementos.
(niebloid)[editar]
close