Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::fill_n(3)		      C++ Standard Libary		std::fill_n(3)

NAME
       std::fill_n - std::fill_n

Synopsis
	  Defined in header <algorithm>
	  template<    class	OutputIt,    class    Size,    class	T    >
       (until C++11)
	  void fill_n( OutputIt	first, Size count, const T& value );
	  template<    class	OutputIt,    class    Size,    class	T    >
       (since C++11)
	  OutputIt  fill_n(  OutputIt  first,  Size  count,  const T& value );
       (until C++20)
	  template< class OutputIt, class Size,	class T	>
	  constexpr OutputIt fill_n( OutputIt first, Size count,  const	   (1)
       (since C++20)
	  T& value );
	  template< class ExecutionPolicy, class ForwardIt, class Size,
	  class				      T				     >
       (2) (since C++17)
	  ForwardIt fill_n( ExecutionPolicy&& policy, ForwardIt	first,
	  Size count, const T& value );

	  1) Assigns the given value to	the first count	elements in the	 range
       beginning at
	  first	if count > 0. Does nothing otherwise.
	  2) Same as (1), but executed according to policy. This overload does
       not participate
	  in overload resolution unless
	  std::is_execution_policy_v<std::decay_t<ExecutionPolicy>>
	  (until C++20)
	  std::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>>
	  (since C++20)	is true.

Parameters
	  first	   -  the beginning of the range of elements to	modify
	  count	   -  number of	elements to modify
	  value	   -  the value	to be assigned
	  policy    -	the  execution policy to use. See execution policy for
       details.

Type requirements
	  -
	  OutputIt must	meet the requirements of LegacyOutputIterator.
	  -
	  ForwardIt must meet the requirements of LegacyForwardIterator.

Return value
	  (none)
       (until C++11)
	  Iterator one past the	last element assigned  if  count  >  0,	 first
       (since C++11)
	  otherwise.

Complexity
	  Exactly count	assignments, for count > 0.

Exceptions
	  The overload with a template parameter named ExecutionPolicy reports
       errors as
	  follows:

	    *  If  execution  of  a  function invoked as part of the algorithm
       throws an exception
	      and ExecutionPolicy is one of the	standard policies, std::termi-
       nate is called.
	      For any other ExecutionPolicy, the behavior  is  implementation-
       defined.
	    *  If  the	algorithm  fails to allocate memory, std::bad_alloc is
       thrown.

Possible implementation
	  template<class OutputIt, class Size, class T>
	  OutputIt fill_n(OutputIt first, Size count, const T& value)
	  {
	      for (Size	i = 0; i < count; i++) {
		  *first++ = value;
	      }
	      return first;
	  }

Example
	  The following	code uses fill_n() to assign -1	to the first half of a
       vector of
	  integers:

       // Run this code

	#include <algorithm>
	#include <vector>
	#include <iostream>
	#include <iterator>

	int main()
	{
	    std::vector<int> v1{0, 1, 2, 3, 4, 5, 6, 7,	8, 9};

	    std::fill_n(v1.begin(), 5, -1);

	    std::copy(begin(v1),	 end(v1),	   std::ostream_itera-
       tor<int>(std::cout, " "));
	    std::cout << '\n';
	}

Output:
	-1 -1 -1 -1 -1 5 6 7 8 9

See also
	  fill		  copy-assigns	the  given value to every element in a
       range
			 (function template)
	  ranges::fill_n assigns a value to a number of	elements
	  (C++20)	 (niebloid)

http://cppreference.com		  2022.07.31			std::fill_n(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::fill_n&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help