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
```

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.
My Personal Notes arrow_drop_up