Related Articles

# fill() and fill_n() functions in C++ STL

• Difficulty Level : Basic
• Last Updated : 11 Oct, 2019

A vector, once declared, has all its values initialized to zero. Following is an example code to demonstrate the same.

 `// C++ program for displaying the default initialization``// of the vector vect[]``#include``using` `namespace` `std;`` ` `int` `main() ``{``    ``// Creating a vector of size 8``    ``vector<``int``> vect(8);  `` ` `    ``// Printing default values``    ``for` `(``int` `i=0; i

Output :

`0 0 0 0 0 0 0 0`

What if we wish to initialize the vector to a specific value, say 1 ? For this, we can pass the value along with the size of the vector.

 `// C++ program for displaying specified initialization``// of the vector vect[]``#include``using` `namespace` `std;`` ` `int` `main () ``{``    ``// Creates a vector of size 8 with all initial``    ``// values as 1.``    ``vector<``int``> vect(8, 1);  `` ` `    ``for` `(``int` `i=0; i

Output :

`1 1 1 1 1 1 1 1`

What if we wish to initialize the first 4 values to say 100 and rest 6 values as 200 ?
One way to do this is to manually provide a value to each position in the vector. The other methods as provided in STL, the Standard Template Library, are fill and fill_n.

• fill()
The ‘fill’ function assigns the value ‘val’ to all the elements in the range [begin, end), where ‘begin’ is the initial position and ‘end’ is the last position.

NOTE : Notice carefully that ‘begin’ is included in the range but ‘end’ is NOT included. Below is an example to demonstrate ‘fill’ :

 `// C++ program to demonstrate working of fill()``#include ``using` `namespace` `std;`` ` `int` `main ()``{``  ``vector<``int``> vect(8);`` ` `  ``// calling fill to initialize values in the``  ``// range to 4``  ``fill(vect.begin() + 2, vect.end() - 1, 4);`` ` `  ``for` `(``int` `i=0; i

Output :

```0 0 4 4 4 4 4 0
```

• fill_n()
In fill_n(), we specify beginning position, number of elements to be filled and values to be filled. The following code demonstrates the use of fill_n.
 `// C++ program to demonstrate working of fil_n()``#include ``using` `namespace` `std;`` ` `int` `main()``{``    ``vector<``int``> vect(8);  `` ` `    ``// calling fill to initialize first four values``    ``// to 7``    ``fill_n(vect.begin(), 4, 7);`` ` `    ``for` `(``int` `i=0; i

Output :

``` 7 7 7 7 0 0 0 0
7 7 7 4 4 4 0 0
```