std::ranges::subrange - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(desde C++20) | |
La plantilla de clase subrange combina juntos un iterador y un centinela en una sola vista (view).
Además, el subrango es un sized_range siempre que el parámetro de plantilla final sea subrange_kind::size (lo que sucede cuando std::sized_sentinel_for<S, I> está satisfecho o cuando el tamaño se pasa explícitamente como un argumento del constructor). El registro de tamaño debe almacenarse si y solo si std::sized_sentinel_for<S, I> es false y K es subrange_kind::sized.
Funciones miembro
(C++20) |
Crea un nuevo subrango. (función miembro pública) |
(C++20) |
Convierte el subrango a un tipo similar a un par. (función miembro pública) |
Observadores | |
(C++20) |
Obtiene el iterador. (función miembro pública) [editar] |
(C++20) |
Obtiene el centinela. (función miembro pública) [editar] |
(C++20) |
Verifica si el subrango (subrange) está vacío. (función miembro pública) [editar] |
(C++20) |
Obtiene el tamaño del subrango (subrange). (función miembro pública) [editar] |
Operaciones de iteradores | |
(C++20) |
Avanza el iterador en una distancia dada. (función miembro pública) [editar] |
(C++20) |
Obtiene una copia del subrango (subrange) con su iterador decrementado en una distancia dada. (función miembro pública) [editar] |
(C++20) |
Obtiene una copia del subrango (subrange) con su iterador avanzado en una distancia dada. (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 ranges::empty le es aplicable. (función miembro pública de std::ranges::view_interface<D>) [editar]
|
(C++20) |
Obtiene la dirección de los datos de una vista derivada. Se proporciona si su tipo iterador satisface contiguous_iterator. (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]
|
Guías de deducción
Funciones no miembro
Tipos auxiliares
Plantillas auxiliares
|
|
||
Esta especialización de std::ranges::enable_borrowed_range hace que subrange satisfaga borrowed_range.
Ejemplo
#include <iostream> #include <map> #include <ranges> #include <string_view> template <class V> void mutar(V& v) { v += 'A' - 'a'; } template <class K, class V> void mutar_valores_de_mapa(std::multimap<K, V>& m, K k) { auto [primero, ultimo] = m.equal_range(k); for (auto& [_, v] : std::ranges::subrange(primero, ultimo)) { mutar(v); } } int main() { auto imprimir = [](std::string_view comentario, auto const& mm) { std::cout << comentario << "{ "; for (const auto& [k, v] : mm) std::cout << "{" << k << ",'" << v << "'} "; std::cout << "}\n"; }; std::multimap<int,char> mm{ {4,'a'}, {3,'-'}, {4,'b'}, {5,'-'}, {4,'c'} }; imprimir("Antes: ", mm); mutar_valores_de_mapa(mm, 4); imprimir("Después: ", mm); }
Salida:
Antes: { {3,'-'} {4,'a'} {4,'b'} {4,'c'} {5,'-'} }
Después: { {3,'-'} {4,'A'} {4,'B'} {4,'C'} {5,'-'} }