# Populating a vector in C++ using fill() and fill_n()

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<bits/stdc++.h>
using namespace std;

int main()
{
// Creating a vector of size 8
vector<int> vect(8);

// Printing default values
for (int i=0; i<vect.size(); i++)
cout << ' ' << vect[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<bits/stdc++.h>
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<vect.size(); i++)
cout << ' ' << vect[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 <bits/stdc++.h>
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<vect.size(); i++)
cout << vect[i] << " ";

return 0;
}
```

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 <bits/stdc++.h>
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<vect.size(); i++)
cout << ' ' << vect[i];
cout << '\n';

// calling fill to initialize 3 elements from
// "begin()+3" with value 4
fill_n(vect.begin() + 3, 3, 4);

for (int i=0; i<vect.size(); i++)
cout << ' ' << vect[i];
cout << '\n';

return 0;
}
```

Output :

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

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
1.2 Average Difficulty : 1.2/5.0
Based on 5 vote(s)