std::generate

From Cppreference

Jump to: navigation, search
Defined in header <algorithm>

template< class ForwardIterator, class Generator >
void generate( ForwardIterator first, ForwardIterator last, Generator g );

Assigns each element in range [first, last) a value generated by the given function object g.

Contents

Parameters

first, last - the range of elements to generate
g - generator function object that will be called.

The signature of the function should be equivalent to the following:

​Ret fun();

The type ​Ret​ must be such that an object of type ​ForwardIterator​ can be dereferenced and assigned a value of type ​Ret​. ​

Return value

(none)

Complexity

linear in the distance between first and last

Equivalent function

template<class ForwardIterator, class Generator>
void generate(ForwardIterator first, ForwardIterator last, Generator g)
{
    while (first != last) {
        *first++ = g();
    }
}

Example

The following code uses fills a vector with random numbers:

#include <algorithm>
#include <iostream>
#include <cstdlib>
 
int main()
{
    std::vector<int> v(5);
    std::generate(v.begin(), v.end(), std::rand); // Using the C function rand()
 
    std::cout << "v: ";
    for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
        std::cout << v[i] << ' ';
    }
 
    return 0;
}

Output:

​52894 15984720 41513563 41346135 51451456​

See also

fill
assigns a range of elements a certain value
(function template)
generate_n
saves the result of N applications of a function
(function template)
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
In other languages