std::ranges::fill_n
Min standard notice:
Header: <algorithm>
Assigns the given value to all elements in the range [first,first + n).
# Declarations
Call signature
template< class T, std::output_iterator<const T&> O >
constexpr O fill_n( O first, std::iter_difference_t<O> n, const T& value );
(since C++20) (until 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 );
(since C++26)
# Parameters
first: the beginning of the range of elements to modifyn: number of elements to modifyvalue: the value to be assigned
# Return value
An output iterator that compares equal to first + n.
# Notes
Feature-test macro Value Std Feature __cpp_lib_algorithm_default_value_type 202403 (C++26) List-initialization for algorithms
# Example
#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);
}