std::ranges::views::transform, std::ranges::transform_view
Definido en el archivo de encabezado <ranges>
|
||
template< ranges::input_range V, std::copy_constructible F > |
(1) | (desde C++20) |
namespace views { inline constexpr /*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 */ |
(desde C++20) | |
template< class F > constexpr /*cierre de adaptador de rango*/ transform( F&& fun ); |
(desde C++20) | |
view
) de una secuencia subyacente después de aplicar una función de transformación a cada elemento.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
(C++20) |
Construye un objeto transform_view (función miembro pública) |
(C++20) |
Devuelve una copia de la vista (adaptada) subyacente. (función miembro pública) |
(C++20) |
Devuelve un iterador al comienzo. (función miembro pública) |
(C++20) |
Devuelve un iterador o un centinela al final. (función miembro pública) |
(C++20) |
Devuelve el número de elementos. Se proporciona solo si el rango (adaptado) subyacente satisface sized_range . (función miembro pública) |
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> )
|
(C++20) |
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> )
|
(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> )
|
(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> )
|
(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] 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(const char x, const char a) { return a + (x - a + 13) % 26; } char rot13(const char 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 = [](const unsigned char 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
(C++20) |
Aplica una función a un rango de elementos. (niebloid) |