An integer range is similar to a Python range.
It is defined by a start value, an end value and a step size such that the i-th value of the range is given by start + i * step.
|
| 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.
|
template<typename... Is, typename EnableIf = std::enable_if_t<(std::is_integral_v<Is> and ...), int>>
| auto itertools::product_range |
( |
Is... | is | ) |
|
|
nodiscard |
#include <itertools/range.hpp>
Create a cartesian product range of integer ranges from given integers.
The given integers specify the excluded last values of the individual itertools::range objects. Each range starts at 0 and has a step size of 1.
#include <iostream>
int main() {
}
auto product_range(Is... is)
Create a cartesian product range of integer ranges from given integers.
Output:
(0, 0)
(0, 1)
(0, 2)
(1, 0)
(1, 1)
(1, 2)
- Template Parameters
-
- Parameters
-
| is | Last values of the integer ranges (excluded). |
- Returns
- Product (itertools::multiplied) range of integer ranges. See itertools::product and itertools::range.
Definition at line 372 of file range.hpp.
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 | ) |
|
|
nodiscard |
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 | ) |
|
|
nodiscard |