std::ranges::fill_n
De cppreference.com
Definido en el archivo de encabezado <algorithm>
|
||
Signatura de la llamada |
||
template< class T, std::output_iterator<const T&> O > constexpr O |
(desde C++20) | |
Asigna el valor value dado a todos los elementos en el rango [
first,
first + n)
.
Las entidades similares a funciones descritas en esta página son niebloids, es decir:
- Las listas de argumentos de plantilla explícitas no se pueden especificar al llamar a cualquiera de ellas.
- Ninguna de ellas es visible para la búsqueda dependiente de argumentos.
- Cuando alguna de ellas se encuentra mediante la búsqueda normal no calificada como el nombre a la izquierda del operador de llamada a función, se inhibe la búsqueda dependiente de argumentos.
En la práctica, pueden implementarse como objetos función o con extensiones de compilador especiales.
Contenido |
[editar] Parámetros
first | - | El comienzo del rango de los elementos a modificar. |
n | - | El número de elementos a modificar. |
value | - | El valor a asignar. |
[editar] Valor de retorno
Un iterador de salida que se compara igual que first + n.
[editar] Complejidad
Exactamente n asignaciones.
[editar] Posible implementación
struct fill_n_fn { template<class T, std::output_iterator<const T&> O> constexpr O operator()(O first, std::iter_difference_t<O> n, const T& value) const { for (std::iter_difference_t<O> i {}; i != n; ++first, ++i) *first = value; return first; } }; inline constexpr fill_n_fn fill_n {}; |
[editar] Ejemplo
Ejecuta este código
#include <algorithm> #include <iostream> #include <string> #include <vector> void println(const auto& v) { for (const auto& elem : v) std::cout << ' ' << elem; std::cout << '\n'; } int main() { constexpr auto n {010}; std::vector<std::string> v(n, "▓▓░░"); println(v); std::ranges::fill_n(v.begin(), n, "░░▓▓"); println(v); }
Salida:
▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓
[editar] Véase también
(C++20) |
Asigna un cierto valor a un rango de elementos. (niebloid) |
(C++20) |
Copia un número de elementos a una nueva ubicación. (niebloid) |
(C++20) |
Guarda el resultado de una función en un rango. (niebloid) |
(C++20) |
Aplica una función a un rango de elementos. (niebloid) |
Asigna por copia el valor dado a todos los elementos de un rango. (plantilla de función) |