# C++ <algorithm> - generate_n() Function

The C++ algorithm::generate_n function is used to assign value returned by successive calls of function gen to the first n elements of the sequence pointed by first.

### Syntax

```template <class OutputIterator, class Size, class Generator>
void generate_n (OutputIterator first,
Size n,
Generator gen);
```
```template <class OutputIterator, class Size, class Generator>
OutputIterator generate_n (OutputIterator first,
Size n,
Generator gen);
```

### Parameters

 `first` Specify initial position of the output iterator. `n` Specify number of elements to be assigned. `gen` Specify generator function which requires no arguments and returns value which can be assigned in the specified sequence.

### Return Value

Returns an iterator pointing to the element that follows the last element whose value has been assigned or None(in C++98).

### Time Complexity

Linear i.e, Θ(n).

### Example:

In the example below, the algorithm::generate_n function is used to assign value in the given sequence using specified generator function.

```#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int N = 1;
int gen() {
return 10*(N++);
}

int main (){
vector<int> vec{1, 1, 1, 1, 1};
vector<int>::iterator it;

cout<<"Before generate_n call, vec contains:";
for(it = vec.begin(); it != vec.end(); ++it)
cout<<" "<<*it;

//assign values to the vector
generate_n(vec.begin(), 3, gen);

cout<<"\nAfter generate_n call, vec contains:";
for(it = vec.begin(); it != vec.end(); ++it)
cout<<" "<<*it;

return 0;
}
```

The output of the above code will be:

```Before generate_n call, vec contains: 1 1 1 1 1
After generate_n call, vec contains: 10 20 30 1 1
```

❮ C++ <algorithm> Library

5