C++ Library - <generator>



The <generator> header is part of the Standard Template Library (STL), used for generating sequences of numbers or values and provides support for coroutines.

Mainly facilitates creating various sequences of numbers, such as arithmetic sequences and to create random numbers.

Including <generator> Header

To include the <generator> header in your C++ program, you can use the following syntax.

#include <generator>

Functions of <generator> Header

Below is list of all functions from <generator> header.

S.No Functions & Description
1 operator=

This function assigns one generator object to another.

2 begin

This function resumes the initially suspended coroutine and returns an iterator pointing to handle.

3 end

This function returns a sentinel value (std::default_sentinel), which signifies the end of the range for the generator.

4 empty

This function checks if the derived view is empty.

5 cbegin

This function returns a constant iterator to the beginning of the range.

6 cend

This function returns a sentinel value for the constant iterator of the range, marking the end of the range.

7 operator bool

This function returns whether the derived view is not empty. Provided if ranges::empty is applicable to it.

Assigning Generators

In the below example code we are going to use, operator= to assign one generator object to another.

#include <generator>
#include <iostream>
std::generator<int> generate_numbers() {
    for (int i = 0; i < 5; ++i) {
        co_yield i;
    }
}
int main() {
    auto gen1 = generate_numbers();
    auto gen2 = gen1;  

    for (int num : gen2) {
        std::cout << num << " ";
    }
    return 0;
}

Output

If we run the above code it will generate the following output

0 1 2 3 4
Advertisements