Espacios de nombres
Variantes
Acciones

std::ranges::fill_n

De cppreference.com
< cpp‎ | algorithm‎ | ranges
 
 
Biblioteca de algoritmos
Políticas de ejecución (C++17)
Operaciones de secuencia no modificantes
(C++11)(C++11)(C++11)
(C++17)
Operaciones de secuencia modificantes
Operaciones en almacenamiento no inicializado
Operaciones de partición
Operaciones de ordenación
Operaciones de búsqueda binaria
Operaciones de conjuntos (en rangos ordenados)
Operaciones de pila
(C++11)
Operaciones mínimo/máximo
(C++11)
(C++17)
Permutaciones
Operaciones numéricas
Bibliotecas C
 
Algoritmos restringidos
Operaciones de secuencia no modificantes
Operaciones de secuencia modificantes
Operaciones en almacenamiento sin inicializar
Operaciones de partición
Operaciones de ordenamiento
Operaciones de búsqueda binaria
Operaciones de conjuntos (en rangos ordenados)
Operaciones de montículo/montón
Operaciones de mínimo/máximo
Permutaciones
 
Definido en el archivo de encabezado <algorithm>
Signatura de la llamada
template<class T, std::output_iterator<const T&> O >

constexpr O

    fill_n( O first, std::iter_difference_t<O> n, const T& value );
(desde C++20)

Asigna el valor value dado a todos los elementos en el rango [firstfirst + n).

Las entidades similares a funciones descritas en esta página son niebloids, es decir:

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

#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

Asigna un cierto valor a un rango de elementos.
(niebloid)[editar]
Copia un número de elementos a una nueva ubicación.
(niebloid)[editar]
Guarda el resultado de una función en un rango.
(niebloid)[editar]
Aplica una función a un rango de elementos.
(niebloid)[editar]
Asigna por copia el valor dado a todos los elementos de un rango.
(plantilla de función)[editar]
close