generate consecutive numbers at compile time
To generate consecutive numbers at compile time in C++, you can use the std::integer_sequence
template provided by the C++ Standard Library. Here are the steps to achieve this:
- Include the necessary headers: Begin by including the necessary headers to use
std::integer_sequence
and related templates. These headers are<utility>
forstd::integer_sequence
and<iostream>
for outputting the generated numbers.
cpp
#include <utility>
#include <iostream>
- Create a helper function template: Define a helper function template that takes an
std::integer_sequence
as a parameter and outputs the numbers.
cpp
template <typename T, T... Ns>
void print_sequence(std::integer_sequence<T, Ns...>)
{
((std::cout << Ns << ' '), ...);
}
This function template takes a parameter of type std::integer_sequence<T, Ns...>
, where T
is the type of the numbers and Ns...
is the sequence of numbers. The function uses a fold expression ((std::cout << Ns << ' '), ...)
to output each number in the sequence.
- Generate the sequence: In your main function, generate the desired sequence of consecutive numbers using the
std::make_integer_sequence
template.
cpp
int main()
{
constexpr int N = 10; // Number of consecutive numbers to generate
using Sequence = std::make_integer_sequence<int, N>;
print_sequence(Sequence{});
return 0;
}
In this example, we generate a sequence of 10 consecutive numbers starting from 0. You can change the value of N
to generate a different number of consecutive numbers.
- Compile and run: Compile and run the code to see the generated sequence of numbers.
The output of the above code will be:
0 1 2 3 4 5 6 7 8 9
The numbers are separated by spaces and printed to the console.
By following these steps, you can generate consecutive numbers at compile time in C++.