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;}}; inlineconstexpr fill_n_fn fill_n {}; |
[editar]Ejemplo
Ejecuta este código
#include <algorithm>#include <iostream>#include <string>#include <vector> void println(constauto& v){for(constauto& elem : v)std::cout<<' '<< elem;std::cout<<'\n';} int main(){constexprauto 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) |