std::generate_n in C++

std::generate is an STL algorithm, which is used to generate numbers based upon a generator function, and then, it assigns those values to the elements in the container in the range [first, last).

The generator function has to be defined by the user, and it is called successively for assigning the numbers.
Now, there can be a scenario, where we want to assign values only to the first n elements, for that we have another STL algorithm std::generate_n, which has the following syntax:
Template function:

OutputIterator generate_n (OutputIterator first, Size n, Generator gen);

first: Output iterator pointing to the beginning of the container.
n: No. of elements to be assigned a value, using generator function.
gen: A generator function for generating the values.

Returns: 
It doesnot have a void return type like std::generate, but, in fact, 
it returns an iterator pointing to the element that follows the last element 
whose value has been generated.
filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to demonstrate the use of std::generate_n
#include <iostream>
#include <vector>
#include <algorithm>
  
// Defining the generator function
int gen()
{
    static int i = 0;
    return ++i;
}
  
using namespace std;
int main()
{
    int i;
  
    // Declaring a vector of size 10
    vector<int> v1(10);
  
    // using std::generate_n
    std::generate_n(v1.begin(), 10, gen);
  
    vector<int>::iterator i1;
    for (i1 = v1.begin(); i1 != v1.end(); ++i1) {
        cout << *i1 << " ";
    }
    return 0;
}

chevron_right


Output:



1 2 3 4 5 6 7 8 9 10

This article is contributed by Mrigendra Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

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

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.