A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../error/error_code/../../ranges/../algorithm/fill.html below:

std::fill - cppreference.com

(1)

template< class ForwardIt, class T >
void fill( ForwardIt first, ForwardIt last, const T& value );

(constexpr since C++20)
(until C++26) template< class ForwardIt, class T = typename std::iterator_traits

                                         <ForwardIt>::value_type >
constexpr void fill( ForwardIt first, ForwardIt last,

                     const T& value );
(since C++26) (2) template< class ExecutionPolicy, class ForwardIt, class T >

void fill( ExecutionPolicy&& policy,

           ForwardIt first, ForwardIt last, const T& value );
(since C++17)
(until C++26) template< class ExecutionPolicy,

          class ForwardIt, class T = typename std::iterator_traits
                                         <ForwardIt>::value_type >
void fill( ExecutionPolicy&& policy,

           ForwardIt first, ForwardIt last, const T& value );
(since C++26)

1) Assigns the given value to all elements in the range [firstlast).

2) Same as (1), but executed according to policy.

This overload participates in overload resolution only if all following conditions are satisfied:

If value is not writable to first, the program is ill-formed.

[edit] Parameters first, last - the pair of iterators defining the range of elements to modify value - the value to be assigned policy - the execution policy to use Type requirements -ForwardIt must meet the requirements of LegacyForwardIterator. [edit] Complexity

Exactly std::distance(first, last) assignments.

[edit] Exceptions

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

[edit] Possible implementation fill (1)
template<class ForwardIt,
         class T = typename std::iterator_traits<ForwardIt>::value_type>
void fill(ForwardIt first, ForwardIt last, const T& value)
{
    for (; first != last; ++first)
        *first = value;
}
[edit] Notes [edit] Example
#include <algorithm>
#include <complex>
#include <iostream>
#include <vector>
 
void println(const auto& seq)
{
    for (const auto& e : seq)
        std::cout << e << ' ';
    std::cout << '\n';
}
 
int main()
{
    std::vector<int> v{0, 1, 2, 3, 4, 5, 6, 7, 8};
    println(v);
 
    // set all of the elements to 8
    std::fill(v.begin(), v.end(), 8);
    println(v);
 
    std::vector<std::complex<double>> nums{{1, 3}, {2, 2}, {4, 8}};
    println(nums);
    #ifdef __cpp_lib_algorithm_default_value_type
        std::fill(nums.begin(), nums.end(), {4, 2});
    #else
        std::fill(nums.begin(), nums.end(), std::complex<double>{4, 2});
    #endif
    println(nums);
}

Output:

0 1 2 3 4 5 6 7 8
8 8 8 8 8 8 8 8 8
(1,3) (2,2) (4,8) 
(4,2) (4,2) (4,2)
[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior LWG 283 C++98 T was required to be CopyAssignable, but
T is not always writable to ForwardIt required to be writable instead [edit] See also copy-assigns the given value to N elements in a range
(function template) [edit] copies a range of elements to a new location
(function template) [edit] assigns the results of successive function calls to every element in a range
(function template) [edit] applies a function to a range of elements, storing results in a destination range
(function template) [edit] assigns a range of elements a certain value
(algorithm function object)[edit]

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4