|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Iterator that traverses multiple containers (STL or Aleph) in lockstep. More...
#include <ah-zip-utils.H>
Public Types | |
| using | value_type = std::tuple< uni_zip_detail::container_value_t< Containers >... > |
Public Member Functions | |
| UniZipIterator (const Containers &... cs) | |
| bool | has_curr () const noexcept |
| Returns true if ALL containers have current element (zip continues) | |
| bool | any_has_curr () const noexcept |
| Returns true if ANY container still has elements (for length checking) | |
| bool | all_completed () const noexcept |
| Returns true if ALL containers are exhausted (equal length check) | |
| bool | completed () const noexcept |
| auto | get_curr () const |
| void | next () |
| auto | operator* () const |
| UniZipIterator & | operator++ () |
| bool | operator== (UniZipSentinel) const noexcept |
| Comparison with sentinel - iterator is "at end" when any container exhausted. | |
| bool | operator!= (UniZipSentinel s) const noexcept |
| bool | operator== (const UniZipIterator &other) const noexcept |
| Comparison with another iterator (for algorithms that need it) | |
| bool | operator!= (const UniZipIterator &other) const noexcept |
Static Public Attributes | |
| static constexpr size_t | num_containers = sizeof...(Containers) |
Private Member Functions | |
| template<size_t... Is> | |
| bool | has_curr_impl (std::index_sequence< Is... >) const noexcept |
| template<size_t... Is> | |
| bool | any_has_curr_impl (std::index_sequence< Is... >) const noexcept |
| template<size_t... Is> | |
| bool | all_completed_impl (std::index_sequence< Is... >) const noexcept |
| template<size_t... Is> | |
| auto | get_curr_impl (std::index_sequence< Is... >) const |
| template<size_t... Is> | |
| void | next_impl (std::index_sequence< Is... >) |
Private Attributes | |
| std::tuple< uni_zip_detail::iterator_wrapper_t< Containers >... > | iters_ |
Iterator that traverses multiple containers (STL or Aleph) in lockstep.
This iterator automatically adapts to the container type, allowing you to zip together any combination of STL and Aleph containers.
| Containers | Parameter pack of container types. |
Definition at line 247 of file ah-zip-utils.H.
| using Aleph::UniZipIterator< Containers >::value_type = std::tuple<uni_zip_detail::container_value_t<Containers>...> |
Definition at line 253 of file ah-zip-utils.H.
|
inlineexplicit |
Definition at line 291 of file ah-zip-utils.H.
|
inlinenoexcept |
Returns true if ALL containers are exhausted (equal length check)
Definition at line 307 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::all_completed_impl().
Referenced by Aleph::UniZipIterator< Containers >::completed().
|
inlineprivatenoexcept |
Definition at line 271 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::completed(), and Aleph::UniZipIterator< Containers >::iters_.
Referenced by Aleph::UniZipIterator< Containers >::all_completed().
|
inlinenoexcept |
Returns true if ANY container still has elements (for length checking)
Definition at line 301 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::any_has_curr_impl().
|
inlineprivatenoexcept |
Definition at line 265 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::has_curr(), and Aleph::UniZipIterator< Containers >::iters_.
Referenced by Aleph::UniZipIterator< Containers >::any_has_curr().
|
inlinenoexcept |
Definition at line 313 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::all_completed().
Referenced by Aleph::UniZipIterator< Containers >::all_completed_impl().
|
inline |
Definition at line 318 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::get_curr_impl().
Referenced by Aleph::UniZipIterator< Containers >::get_curr_impl(), Aleph::UniZipIterator< Containers >::operator*(), Aleph::uni_zip_assoc(), and Aleph::uni_zip_last().
|
inlineprivate |
Definition at line 277 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::get_curr(), and Aleph::UniZipIterator< Containers >::iters_.
Referenced by Aleph::UniZipIterator< Containers >::get_curr().
|
inlinenoexcept |
Returns true if ALL containers have current element (zip continues)
Definition at line 295 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::has_curr_impl().
Referenced by Aleph::UniZipIterator< Containers >::any_has_curr_impl(), Aleph::UniZipView< Containers >::empty(), Aleph::UniZipIterator< Containers >::has_curr_impl(), Aleph::UniZipIterator< Containers >::operator==(), and Aleph::UniZipIterator< Containers >::operator==().
|
inlineprivatenoexcept |
Definition at line 259 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::has_curr(), and Aleph::UniZipIterator< Containers >::iters_.
Referenced by Aleph::UniZipIterator< Containers >::has_curr().
|
inline |
Definition at line 323 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::next_impl().
Referenced by Aleph::UniZipIterator< Containers >::operator++().
|
inlineprivate |
Definition at line 283 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::iters_.
Referenced by Aleph::UniZipIterator< Containers >::next().
|
inlinenoexcept |
Definition at line 355 of file ah-zip-utils.H.
References Aleph::maps().
|
inlinenoexcept |
Definition at line 343 of file ah-zip-utils.H.
|
inline |
Definition at line 329 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::get_curr().
|
inline |
Definition at line 331 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::next().
|
inlinenoexcept |
Comparison with another iterator (for algorithms that need it)
Definition at line 349 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::has_curr(), and Aleph::maps().
|
inlinenoexcept |
Comparison with sentinel - iterator is "at end" when any container exhausted.
Definition at line 338 of file ah-zip-utils.H.
References Aleph::UniZipIterator< Containers >::has_curr().
|
private |
Definition at line 256 of file ah-zip-utils.H.
Referenced by Aleph::UniZipIterator< Containers >::all_completed_impl(), Aleph::UniZipIterator< Containers >::any_has_curr_impl(), Aleph::UniZipIterator< Containers >::get_curr_impl(), Aleph::UniZipIterator< Containers >::has_curr_impl(), and Aleph::UniZipIterator< Containers >::next_impl().
|
staticconstexpr |
Definition at line 289 of file ah-zip-utils.H.