Apache C++ Standard Library Reference Guide

## fill(), fill_n()

Library: Algorithms

    Function

- Local Index
- Summary
- Synopsis
- Description
- Complexity
- Example
- See Also
- Standards Conformance

### Local Index

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

### See Also

Algorithms

### Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 25.2.5