TRIQS/itertools 1.3.0
C++ range library
Loading...
Searching...
No Matches
range.hpp File Reference
#include "./product.hpp"
#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <stdexcept>
#include <utility>

Detailed Description

Provides an integer range similar to Python's range.

Definition in file range.hpp.

Go to the source code of this file.

Classes

class  itertools::range
 A lazy range of integers that mimics a Python range. More...
 
struct  itertools::range::all_t
 Denote a full range at compile-time. More...
 
struct  itertools::range::const_iterator
 Const iterator type for itertools::range. More...
 

Functions

template<typename F >
void itertools::foreach (range const &rg, F &&f)
 Apply a function to every element of an integer itertools::range.
 
template<typename... Is, typename EnableIf = std::enable_if_t<(std::is_integral_v<Is> and ...), int>>
auto itertools::product_range (Is... is)
 Create a cartesian product range of integer ranges from given integers.
 
template<typename I , size_t N, typename EnableIf = std::enable_if_t<std::is_integral_v<I>, int>>
auto itertools::product_range (std::array< I, N > const &idx_arr)
 Create a cartesian product range of integer ranges from an array of integers.
 
template<typename... Is, typename EnableIf = std::enable_if_t<(std::is_integral_v<Is> and ...), int>>
auto itertools::product_range (std::tuple< Is... > const &idx_tpl)
 Create a cartesian product range of integer ranges from a tuple of integers.