itertools::zip

#include <itertools.hpp>

Synopsis

template<typename R>
detail::zipped<R…> zip (R &&… ranges)

Generate a zip of the ranges (similar to Python zip).

The function returns a iterable lazy object. When iterated upon, this object yields a tuple of the objects in the ranges.

Template parameters

  • R Type of the ranges

Parameters

  • ranges

    The ranges to zip.

    Warning

    The ranges have to be equal lengths or behaviour is undefined.

Example

#include <itertools/itertools.hpp>
#include <vector>
#include <iostream>

int main() {

  std::vector<int> v1{10, 11, 12, 13, 14};
  std::vector<int> v2{0, 1, 2, 3, 4};

  for (auto [x, y] : itertools::zip(v1, v2)) std::cout << x << "  " << y << std::endl;
}

Output

10  0
11  1
12  2
13  3
14  4