14template <
class... Containers>
28 : _begin(create_iterators(cs...)), _end(create_end_iterators(cs...)),
29 _size(_compute_size(cs...)) {}
58 static std::size_t _compute_size(Containers&... containers) {
59 return std::min({containers.size()...});
68 static iterator_t create_iterators(Containers&... containers) {
78 static iterator_t create_end_iterators(Containers&... containers) {
Iterator for traversing multiple zipped containers simultaneously.
std::tuple< iterator_t< Containers >... > iterator_tuple
Type alias for the tuple of iterators used in the zipped containers.
Combines multiple containers into a single iterable unit, iterating over corresponding elements from ...
iterator begin()
Returns an iterator to the beginning of the zipped containers.
iterator end()
Returns an iterator to the end of the zipped containers.
ZipperIterator< Containers... > iterator
Type alias for the iterator type used to traverse the zipped containers.
typename iterator::iterator_tuple iterator_t
Type alias for the tuple of iterators used in the zipped containers.
Zipper(Containers &... cs)
Constructs a Zipper with the provided containers.