std::ranges:: views:: iota, std::ranges:: iota_view
|
Definido en el encabezado
<ranges>
|
||
|
template
<
std::
weakly_incrementable
W,
std::
semiregular
Bound
=
std::
unreachable_sentinel_t
>
|
(1) | (desde C++20) |
|
namespace
views
{
inline
constexpr
/* no especificado */
iota
=
/* no especificado */
;
|
(2) | (desde C++20) |
|
Firma de llamada
|
||
|
template
<
class
W
>
requires
/* ver más abajo */
|
(desde C++20) | |
|
template
<
class
W,
class
Bound
>
requires
/* ver más abajo */
|
(desde C++20) | |
Contenidos |
Objetos de punto de personalización
El nombre
views::iota
denota un
objeto de punto de personalización
, que es un
objeto función
constante de un tipo de clase
literal
semiregular
. Consulte
CustomizationPointObject
para más detalles.
Miembros de datos
| Miembro | Definición |
W
value_
|
el valor inicial
( objeto miembro solo para exposición* ) |
Bound
bound_
|
el valor centinela, puede ser inalcanzable
( objeto miembro solo para exposición* ) |
Funciones miembro
crea un
iota_view
(función miembro pública) |
|
obtiene el iterador inicial de un
iota_view
(función miembro pública) |
|
obtiene el centinela que denota el final de un
iota_view
(función miembro pública) |
|
comprueba si el
iota_view
está vacío (es decir, si el iterador y el centinela son iguales)
(función miembro pública) |
|
|
(opcional)
|
obtiene el tamaño de un
iota_view
(solo se proporciona si está acotado)
(función miembro pública) |
Heredado de std::ranges::view_interface |
|
|
(C++23)
|
devuelve un iterador constante al inicio del rango
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
(C++23)
|
devuelve un centinela para el iterador constante del rango
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
devuelve si la vista derivada no está vacía, proporcionado solo si
ranges::empty
es aplicable a ella
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
devuelve el primer elemento en la vista derivada, proporcionado si satisface
forward_range
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
devuelve el último elemento en la vista derivada, proporcionado solo si satisface
bidirectional_range
y
common_range
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
devuelve el
n
ésimo
elemento en la vista derivada, proporcionado solo si satisface
random_access_range
(función miembro pública de
std::ranges::view_interface<D>
)
|
|
Guías de deducción
Clases anidadas
|
el tipo de iterador
( clase miembro solo para exposición* ) |
|
el tipo de centinela utilizado cuando el
iota_view
está acotado y
Bound
y
W
no son del mismo tipo
( clase miembro solo para exposición* ) |
Plantillas auxiliares
|
template
<
std::
weakly_incrementable
W,
std::
semiregular
Bound
>
constexpr bool ranges:: enable_borrowed_range < ranges :: iota_view < W, Bound >> = true ; |
(desde C++20) | |
Esta especialización de
ranges::
enable_borrowed_range
hace que
iota_view
satisfaga
borrowed_range
.
Ejemplo
#include <algorithm> #include <iostream> #include <ranges> struct Bound { int bound; bool operator==(int x) const { return x == bound; } }; int main() { for (int i : std::ranges::iota_view{1, 10}) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1, 10)) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1, Bound{10})) std::cout << i << ' '; std::cout << '\n'; for (int i : std::views::iota(1) | std::views::take(9)) std::cout << i << ' '; std::cout << '\n'; std::ranges::for_each(std::views::iota(1, 10), [](int i){ std::cout << i << ' '; }); std::cout << '\n'; }
Salida:
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 4096 | C++20 |
views::iota
podría copiar un
iota_view
tal cual
|
prohibido |
| P2325R3 | C++20 |
iota_view
requería que
W
fuera
semiregular
como
view
requería
default_initializable
|
solo requiere que
W
sea
copyable
|
Véase también
|
(C++11)
|
llena un rango con incrementos sucesivos del valor inicial
(plantilla de función) |
|
(C++23)
|
llena un rango con incrementos sucesivos del valor inicial
(objeto función de algoritmo) |
una
view
que consiste en una secuencia generada produciendo repetidamente el mismo valor
(plantilla de clase) (objeto punto de personalización) |
|
una
view
que mapea cada elemento de la secuencia adaptada a una tupla de tanto la posición del elemento como su valor
(plantilla de clase) (objeto adaptador de rango) |