std::ranges::get(std::ranges::subrange)
De es.cppreference.net
| Definido en el encabezado <ranges>
|
||
template< std::size_t N, class I, class S, ranges::subrange_kind K >
requires ((N == 0 && std::copyable<I>) || N == 1)
constexpr auto get( const ranges::subrange<I, S, K>& r );
|
(1) | (desde C++20) |
template< std::size_t N, class I, class S, ranges::subrange_kind K >
requires (N < 2)
constexpr auto get( ranges::subrange<I, S, K>&& r );
|
(2) | (desde C++20) |
namespace std { using ranges::get; }
|
(3) | (desde C++20) |
Proporciona soporte para enlace estructurado.
1) Obtiene el iterador o centinela de un
subrange valor izquierdo (o un valor derecho const) cuando N == 0 o N == 1, respectivamente.2) Igual que (1), excepto que toma un
subrange valor derecho no constante.3) Las sobrecargas (1,2) se importan al espacio de nombres
std, lo que simplifica su uso y hace que cada subrange con un iterador copiable sea un tipo tipo par.Parámetros
| r | - |
a
subrange
|
Valor de retorno
1,2)
Si
N
es
0
, devuelve
r.
begin
(
)
. En caso contrario (
N
es
1
), devuelve
r.
end
(
)
.
Ejemplo
Ejecutar este código
#include <array> #include <iostream> #include <iterator> #include <ranges> int main() { std::array a{1, -2, 3, -4}; std::ranges::subrange sub_a{std::next(a.begin()), std::prev(a.end())}; std::cout << *std::ranges::get<0>(sub_a) << ' ' // == *(begin(a) + 1) << *std::ranges::get<1>(sub_a) << '\n'; // == *(end(a) - 1) *std::get<0>(sub_a) = 42; // OK // *std::get<2>(sub_a) = 13; // Error: index can only be 0 or 1 }
Salida:
-2 -4
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3589 | C++20 |
la sobrecarga
(
1
)
copia
begin_
si
N
es
0
, pero
I
podría no modelar
copyable
|
se añadieron restricciones |
Véase también
| Structured binding (C++17) | vincula los nombres especificados a subobjetos o elementos de tupla del inicializador |
|
(C++11)
|
accede al elemento especificado de la tupla
(plantilla de función) |
|
(C++11)
|
accede a un elemento de un
pair
(plantilla de función) |
|
(C++11)
|
accede a un elemento de un
array
(plantilla de función) |
|
(C++17)
|
lee el valor de la variante dado el índice o el tipo (si el tipo es único), lanza excepción en caso de error
(plantilla de función) |
|
(C++26)
|
obtiene una referencia a la parte real o imaginaria de un
std::complex
(plantilla de función) |