std::ranges::ref_view - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(desde C++20) | |
ref_view es una vista (view) de los elementos de algún otro rango (range). Envuelve una referencia a ese rango (range).
Datos miembro
ref_view se comporta como si solo almacenara un subobjeto miembro R* al rango al que hace referencia. El miembro aquí se muestra como r_ (el nombre es solo de exposición).
Funciones miembro
(constructor) (C++20) |
Construye un objeto ref_view que hace referencia al rango dado. (función miembro pública) |
base (C++20) |
Devuelve las referencias al rango referenciado. (función miembro pública) |
begin (C++20) |
Devuelve el iterador al comienzo del rango referenciado. (función miembro pública) |
end (C++20) |
Devuelve el centinela del rango referenciado. (función miembro pública) |
empty (C++20) |
Verifica si el rango referenciado está vacío. (función miembro pública) |
size (C++20) |
Devuelve el tamaño del sized_range referenciado. (función miembro pública) |
data (C++20) |
Devuelve el puntero al comienzo del contiguous_range referenciado. (función miembro pública) |
Heredadas de ranges::view_interface | |
(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]
|
std::ranges::ref_view::ref_view
|
|
(desde C++20) | |
Inicializa r_ con std::addressof(static_cast<R&>(std::forward<T>(t))).
/*diferente de*/<T, U> se satisface si y solo si std::remove_cvref_t<T> y std::remove_cvref_t<U> no son el mismo tipo, y las sobrecargas de _FUN se declaran como void _FUN(R&); void _FUN(R&&) = delete;.
Parámetros
| t | - | El rango a referenciar. |
std::ranges::ref_view::base
|
|
(desde C++20) | |
Equivalente a return *r_;.
std::ranges::ref_view::begin
|
|
(desde C++20) | |
Equivalente a return ranges::begin(*r_);.
std::ranges::ref_view::end
|
|
(desde C++20) | |
Equivalente a return ranges::end(*r_);.
std::ranges::ref_view::empty
|
|
(desde C++20) | |
Equivalente a return ranges::empty(*r_);.
std::ranges::ref_view::size
|
|
(desde C++20) | |
std::ranges::ref_view::data
|
|
(desde C++20) | |
Guías de deducción
|
|
(desde C++20) | |
Plantillas auxiliares
|
|
(desde C++20) | |
Esta especialización de std::ranges::enable_borrowed_range hace que ref_view satisfaga borrowed_range.
Ejemplo
#include <ranges> #include <iostream> int main() { const std::string s{"cosmos"}; const std::ranges::take_view tv{s, 3}; const std::ranges::ref_view rv{tv}; std::cout << std::boolalpha << "llamada a empty() : " << rv.empty() << '\n' << "llamada a size() : " << rv.size() << '\n' << "llamada a begin() : " << *rv.begin() << '\n' << "llamada a end() : " << *(rv.end()-1) << '\n' << "llamada a data() : " << rv.data() << '\n' << "llamada a base() : " << rv.base().size() << '\n' // ~> tv.size() << "for basado en rango : "; for (const auto c: rv) { std::cout << c; } std::cout << '\n'; }
Salida:
llamada a empty() : false llamada a size() : 3 llamada a begin() : c llamada a end() : s llamada a data() : cosmos llamada a base() : 3 for basado en rango : cos
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 |
|---|---|---|---|
| P2325R3 | C++20 | El constructor por defecto que se proporcionaba como viewdebía ser default_initializable.
|
Se eliminó, así como el requerimiento. |