Namespaces
Variants

std::ranges::fill_n

De es.cppreference.net
 
 
Biblioteca de algoritmos
Algoritmos restringidos y algoritmos sobre rangos (C++20)
Algoritmos restringidos, p.ej. ranges::copy, ranges::sort, ...
Operaciones de secuencia no modificadoras    
Operaciones por lotes
(C++17)
Operaciones de búsqueda
Operaciones de secuencia modificadoras
Operaciones de copia
(C++11)
(C++11)
Operaciones de intercambio
Operaciones de transformación
Operaciones de generación
Operaciones de eliminación
Operaciones de cambio de orden
(hasta C++17)(C++11)
(C++20)(C++20)
Operaciones de muestreo
(C++17)

Operaciones de ordenación y relacionadas
Operaciones de particionado
(C++11)    

Operaciones de ordenación
Operaciones de búsqueda binaria
(sobre rangos particionados)
Operaciones de conjunto (sobre rangos ordenados)
Operaciones de mezcla (sobre rangos ordenados)
Operaciones de montículo
Operaciones de mínimo/máximo
(C++11)
(C++17)
Operaciones de comparación lexicográfica
Operaciones de permutación


 
Algoritmos restringidos
Todos los nombres en este menú pertenecen al espacio de nombres std::ranges
Operaciones de secuencia no modificadoras
Operaciones de secuencia modificadoras
Operaciones de particionado
Operaciones de ordenación
Operaciones de búsqueda binaria (sobre rangos ordenados)
       
       
Operaciones de conjunto (sobre rangos ordenados)
Operaciones de montículo
Operaciones de mínimo/máximo
       
       
Operaciones de permutación
Operaciones de plegado
Operaciones sobre almacenamiento no inicializado
Tipos de retorno
 
Definido en el encabezado <algorithm>
Firma de 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)
(hasta C++26)
template< class O, class T = std::iter_value_t<O> >
requires std::output_iterator<O, const T&>
constexpr O fill_n( O first, std::iter_difference_t<O> n, const T& value );
(desde C++26)

Asigna el value dado a todos los elementos en el rango [first, first + n).

Las entidades similares a funciones descritas en esta página son objetos de función de algoritmo (conocidos informalmente como niebloids), es decir:

Parámetros

first - el inicio del rango de elementos a modificar
n - número de elementos a modificar
value - el valor a asignar

Valor de retorno

Un iterador de salida que se compara igual a first + n .

Complejidad

Exactamente n asignaciones.

Implementación posible

struct fill_n_fn
{
    template<class O, class T = std::iter_value_t<O>>
    requires std::output_iterator<O, const T&>
    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 {};

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_algorithm_default_value_type 202403 (C++26) Inicialización por lista para algoritmos

Ejemplo

#include <algorithm>
#include <complex>
#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{8};
    std::vector<std::string> v(n, "▓▓░░");
    println(v);
    std::ranges::fill_n(v.begin(), n, "░░▓▓");
    println(v);
    std::vector<std::complex<double>> nums{{1, 3}, {2, 2}, {4, 8}};
    println(nums);
    #ifdef __cpp_lib_algorithm_default_value_type
        std::ranges::fill_n(nums.begin(), 2, {4, 2});
    #else
        std::ranges::fill_n(nums.begin(), 2, std::complex<double>{4, 2});
    #endif
    println(nums);
}

Salida:

 ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░ ▓▓░░
 ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓ ░░▓▓
 (1,3) (2,2) (4,8)
 (4,2) (4,2) (4,8)

Véase también

asigna un valor determinado a un rango de elementos
(objeto función de algoritmo)
copia un número de elementos a una nueva ubicación
(objeto función de algoritmo)
guarda el resultado de una función en un rango
(objeto función de algoritmo)
aplica una función a un rango de elementos
(objeto función de algoritmo)
llena un rango con números aleatorios de un generador uniforme de bits aleatorios
(objeto función de algoritmo)
asigna por copia el valor dado a N elementos en un rango
(plantilla de función)