GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
* Sign Up! *

Support
Customer Portal
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::ranges::fill_n(3) C++ Standard Libary std::ranges::fill_n(3)

std::ranges::fill_n - std::ranges::fill_n


Defined in header <algorithm>
Call signature
template< class T, std::output_iterator<const T&> O > (since C++20)
constexpr O fill_n( O first, std::iter_difference_t<O> n, const T& (until C++26)
value );
template< class O, class T = std::iter_value_t<O> >


requires std::output_iterator<O, const T&> (since C++26)


constexpr O fill_n( O first, std::iter_difference_t<O> n, const T&
value );


Assigns the given value to all elements in the range [first, first + n).


The function-like entities described on this page are niebloids, that is:


* Explicit template argument lists cannot be specified when calling any of them.
* None of them are visible to argument-dependent lookup.
* When any of them are found by normal unqualified lookup as the name to the left
of the function-call operator, argument-dependent lookup is inhibited.


In practice, they may be implemented as function objects, or with special compiler
extensions.


first - the beginning of the range of elements to modify
n - number of elements to modify
value - the value to be assigned


An output iterator that compares equal to first + n.


Exactly n assignments.


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 {};


Feature-test macro Value Std Feature
__cpp_lib_algorithm_default_value_type 202403 (C++26) List-initialization for
algorithms

// Run this code


#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);
}


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


ranges::fill assigns a range of elements a certain value
(C++20) (niebloid)
ranges::copy_n copies a number of elements to a new location
(C++20) (niebloid)
ranges::generate saves the result of a function in a range
(C++20) (niebloid)
ranges::transform applies a function to a range of elements
(C++20) (niebloid)
ranges::generate_random fills a range with random numbers from a uniform random bit
(C++26) generator
(niebloid)
fill_n copy-assigns the given value to N elements in a range
(function template)

2024.06.10 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.