std::ranges::views::elements, std::ranges::elements_view - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(1) | (desde C++20) |
|
|
(2) | (desde C++20) |
| Signatura de la llamada |
||
|
|
(desde C++20) | |
| Helper concepts |
||
|
|
(3) | (desde C++20) |
|
|
(4) | (desde C++20) |
1) Acepta una vista (view) de valores similares a tuplas, y emite una vista con un tipo valor del N-ésimo elemento del tipo valor de la vista adaptada.
2) Cada especialización de views::elements es un objeto adaptador de rango. La expresión views::elements<M>(e) es equivalente en expresión a elements_view<views::all_t<decltype((e))>, M>{e} para cualquier subexpresión e y expresión constante M adecuadas.
3) Se asegura de que los elementos de la vista subyacente sean valores similares a tuplas.
4) Se asegura de que no puedan devolverse referencias pendientes.
elements_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.
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.
Funciones miembro
(C++20) |
Construye un objeto elements_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 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]
|
(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>) [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]
|
Clases anidadas
| El tipo iterador. (plantilla de clase miembro de solo exposición) | |
| El tipo centinela. (plantilla de clase miembro de solo exposición) |
Plantillas auxiliares
|
|
(desde C++20) | |
Esta especialización de std::ranges::enable_borrowed_range hace que elements_view satisfaga borrowed_range cuando la vista subyacente lo hace.
Ejemplo
#include <iostream> #include <ranges> #include <tuple> #include <vector> int main() { const std::vector<std::tuple<int, char, std::string>> vt { {1, 'A', "α"}, {2, 'B', "β"}, {3, 'C', "γ"}, {4, 'D', "δ"}, {5, 'E', "ε"}, }; for (int const e: std::views::elements<0>(vt)) { std::cout << e << ' '; } std::cout << '\n'; for (char const e: vt | std::views::elements<1>) { std::cout << e << ' '; } std::cout << '\n'; for (std::string const& e: std::views::elements<2>(vt)) { std::cout << e << ' '; } std::cout << '\n'; }
Salida:
1 2 3 4 5 A B C D E α β γ δ ε
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3494 | C++20 | elements_view nunca era un borrowed_range.
|
Es un borrowed_range si su vista subyacente lo es.
|
| LWG 3502 | C++20 | Podía obtenerse una referencia pendiente de elements_view.
|
Se prohíbe tal uso. |
Véase también
Toma una vista (view) que consiste en valores similares a pares y produce una vista de los primeros elementos de cada par. (plantilla de clase) (objeto adaptador de rango) [editar] | |
Toma una vista (view) que consiste valores similares a pares y produce una vista de los segundos elementos de cada par. (plantilla de clase) (objeto adaptador de rango) [editar] | |
BLAS-como una rebanada de valarray: índice de inicio, duración, ritmo Original: BLAS-like slice of a valarray: starting index, length, stride The text has been machine-translated via Google Translate. (clase) [editar] |