...

/

Lazy Evaluation

Lazy Evaluation

Understand the use of 'std::views::iota' with examples.

We'll cover the following...

std::views::iota is a range factory for creating a sequence of elements by successively incrementing an initial value. This sequence can be finite or infinite.

Filling vector with views::iota

The following program fills a std::vector with 1010 int’s, starting with 00.

Press + to interact
#include <iostream>
#include <numeric>
#include <ranges>
#include <vector>
int main() {
std::cout << std::boolalpha;
std::vector<int> vec;
std::vector<int> vec2;
for (int i: std::views::iota(0, 10)) vec.push_back(i);
for (int i: std::views::iota(0) | std::views::take(10)) vec2.push_back(i);
std::cout << "vec == vec2: " << (vec == vec2) << '\n';
for (int i: vec) std::cout << i << " ";
}

The first iota call (line 12) creates all numbers from 00 to ...