Apache C++ Standard Library Reference Guide

## fill(), fill_n()

Library:  Algorithms

`Function`

No Entries

### Summary

Algorithm that assigns the same value to the elements in a given range

### Synopsis

```#include <algorithm>

namespace std {
template <class ForwardIterator, class T>
void fill(ForwardIterator start, ForwardIterator finish,
const T& value);

template <class OutputIterator, class Size, class T>
void fill_n(OutputIterator start, Size n, const T& value);
}
```

### Description

The fill() and fill_n() algorithms are used to assign a value to the elements in a sequence. fill() assigns the value to all the elements designated by iterators in the range [start, finish).

The fill_n() algorithm assigns the value to all the elements designated by iterators in the range [start, start + n). fill_n() assumes that all iterators in the range [start, start + n) are dereferenceable, unless start is an insert iterator.

Type T must be Assignable, and Size must be convertible to an integral type.

### Complexity

fill() makes exactly finish - start assignments, and fill_n() makes exactly n assignments.

### Example

```//
// fill.cpp
//

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

int main ()
{
// Typedef for convenience.
typedef std::vector<int, std::allocator<int> > vector;

const vector::value_type arr[] = { 1, 2, 3, 4 };

// Set up two vectors.
vector v1(arr, arr + sizeof arr / sizeof *arr);
vector v2(v1.begin (), v1.end ());

// Set up one empty vector.
vector v3;

// Fill all of v1 with 9.
std::fill(v1.begin (), v1.end (), 9);

// Fill first 3 of v2 with 7.
std::fill_n(v2.begin (), 3, 7);

// Use insert iterator to fill v3 with 5 11's.
std::fill_n(std::back_inserter (v3), 5, 11);

// Copy all three to cout.
std::ostream_iterator<vector::value_type, char,
std::char_traits<char> > out(std::cout, " ");

std::copy(v1.begin (), v1.end (), out);
std::cout << std::endl;

std::copy(v2.begin (), v2.end (), out);
std::cout << std::endl;

std::copy(v3.begin (), v3.end (), out);
std::cout << std::endl;

// Fill cout with 3 5's.
std::fill_n(out, 3, 5);
std::cout << std::endl;

return 0;
}

Program Output
```
```9 9 9 9
7 7 7 4
11 11 11 11 11
5 5 5
```