fill

 Category: algorithms Component type: function

Prototype

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

Description

`Fill` assigns the value `value` to every element in the range `[first, last)`. That is, for every iterator `i` in `[first, last)`, it performs the assignment `*i = value`.

Definition

Defined in the standard header algorithm, and in the nonstandard backward-compatibility header algo.h.

Preconditions

• `[first, last)` is a valid range.

Complexity

Linear. `Fill` performs exactly `last - first` assignments.

Example

```Vector<double> V(4);
fill(V.begin(), V.end(), 137);
assert(V[0] == 137 && V[1] == 137 && V[2] == 137 && V[3] == 137);
```

Notes

[1] The reason that `fill` requires its argument to be a mutable ForwardIterator, rather than merely an OutputIterator, is that it uses a range `[first, last)` of iterators. There is no sensible way to describe a range of OutputIterator, because it is impossible to compare two OutputIterator for equality. The `fill_n` algorithm does have an interface that permits use of an OutputIterator.

`copy`, `fill_n`, `generate`, `generate_n`, `iota`