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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::ranges::fill - std::ranges::fill

Synopsis
	  Defined in header <algorithm>
	  Call signature
	  template< class T, std::output_iterator<const	T&> O,
	  std::sentinel_for<O>			     S			     >
       (1) (since C++20)
	  constexpr O fill( O first, S last, const T& value );
	  template< class T, ranges::output_range<const	T&> R >
	  constexpr  ranges::borrowed_iterator_t<R>  fill(  R&&	 r,  const  T&
       (2) (since C++20)
	  value	);

	  1)  Assigns  the  given  value  to the elements in the range [first,
       last).
	  2) Same as (1), but  uses  r	as  the	 source	 range,	 as  if	 using
       ranges::begin(r)	as
	  first	and ranges::end(r) as last.

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

	    * Explicit template	argument lists may not be specified when call-
       ing any of them.
	    * None of them is visible to argument-dependent lookup.
	    * When one of them is found	by normal unqualified lookup  for  the
       name to the left
	      of  the  function-call  operator,	it inhibits argument-dependent
       lookup.

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

Parameters
	  first, last -	the range of elements to modify
	  r	      -	the range of elements to modify
	  value	      -	the value to be	assigned

Return value
	  An output iterator that compares equal to last.

Complexity
	  Exactly last - first assignments.

Possible implementation
	  struct fill_fn {
	    template<  class  T,  std::output_iterator<const  T&> O, std::sen-
       tinel_for<O> S >
	    constexpr O	operator()( O first, S last, const T& value ) const
	    {
		while (first !=	last) {
		    *first++ = value;
		}

		return first;
	    }

	    template< class T, ranges::output_range<const T&> R	>
	    constexpr ranges::borrowed_iterator_t<R> operator()( R&& r,	 const
       T& value	) const
	    {
	      return (*this)(ranges::begin(r), ranges::end(r), value);
	    }
	  };

	  inline constexpr fill_fn fill;

Example
	  The following	code uses ranges::fill() to set	all of the elements of
       a vector	of
	  ints first to	-1, then to 10.

       // Run this code

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

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

	    namespace ranges = std::ranges;
	    ranges::fill(v.begin(), v.end(), -1);

	    for	(auto elem : v)	{
		std::cout << elem << " ";
	    }
	    std::cout << "\n";

	    ranges::fill(v, 10);

	    for	(auto elem : v)	{
		std::cout << elem << " ";
	    }
	    std::cout << "\n";
	}

Output:
	-1 -1 -1 -1 -1 -1 -1 -1	-1 -1
	10 10 10 10 10 10 10 10	10 10

See also
	  ranges::fill_n    assigns a value to a number	of elements
	  (C++20)	    (niebloid)
	  ranges::copy
	  ranges::copy_if   copies a range of elements to a new	location
	  (C++20)	    (niebloid)
	  (C++20)
	  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)
	  fill		    copy-assigns the given value to every element in a
       range
			    (function template)

http://cppreference.com		  2022.07.31		  std::ranges::fill(3)

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

home | help