![]() |
Vcsn
2.8
Be Rational
|
Provide a range that allows to iterate over the cross product of the provided ranges. More...
#include <cross.hh>
Classes | |
| struct | cross_iterator |
| Composite iterator. More... | |
Public Types | |
| using | self_t = cross_sequences |
| using | sequences_t = std::tuple< Sequences... > |
| Type of the tuple of all the maps. More... | |
| template<std::size_t... I> | |
| using | seq = vcsn::detail::index_sequence< I... > |
| Type of index sequences. More... | |
| using | indices_t = vcsn::detail::make_index_sequence< sizeof...(Sequences)> |
| Index sequence for our sequences. More... | |
| template<typename Seq > | |
| using | seq_t = std::remove_reference_t< Seq > |
| The type of the underlying sequences, without reference. More... | |
| using | value_type = std::tuple< typename seq_t< Sequences >::value_type... > |
| The type of the members. More... | |
| using | const_iterators_t = std::tuple< typename seq_t< Sequences >::const_iterator... > |
| Tuple of const_iterators. More... | |
| using | iterators_t = std::tuple< typename seq_t< Sequences >::iterator... > |
| Tuple of iterators. More... | |
| using | iterator = cross_iterator< value_type, iterators_t > |
| Mutable iterator. More... | |
| using | const_iterator = cross_iterator< const value_type, const_iterators_t > |
| Const iterator. More... | |
Public Member Functions | |
| cross_sequences (sequences_t sequences) | |
| cross_sequences (Sequences... sequences) | |
| self_t & | skip_first (bool s=true) |
| Whether to skip the first element. More... | |
| const_iterator | cbegin () const |
| const_iterator | cend () const |
| const_iterator | begin () const |
| const_iterator | end () const |
| iterator | begin () |
| iterator | end () |
| bool | empty () const |
| Whether the sequence is empty. More... | |
Static Public Attributes | |
| static constexpr size_t | size = sizeof...(Sequences) |
| Number of sequences. More... | |
Private Member Functions | |
| template<std::size_t... I> | |
| const_iterator | cbegin_ (seq< I... >) const |
| template<std::size_t... I> | |
| const_iterator | cend_ (seq< I... >) const |
| template<std::size_t... I> | |
| iterator | begin_ (seq< I... >) |
| template<std::size_t... I> | |
| iterator | end_ (seq< I... >) |
Private Attributes | |
| sequences_t | sequences_ |
| The sequences we iterate upon. More... | |
| bool | skip_first_ = false |
| Whether to skip the initial element. More... | |
Provide a range that allows to iterate over the cross product of the provided ranges.
E.g., {a,b,c} x {1,2} -> {(a,1), (a,2), (b,1), (b,2), (c,1), (c,2)}.
| using vcsn::cross_sequences< Sequences >::const_iterator = cross_iterator<const value_type, const_iterators_t> |
| using vcsn::cross_sequences< Sequences >::const_iterators_t = std::tuple<typename seq_t<Sequences>::const_iterator...> |
| using vcsn::cross_sequences< Sequences >::indices_t = vcsn::detail::make_index_sequence<sizeof...(Sequences)> |
| using vcsn::cross_sequences< Sequences >::iterator = cross_iterator<value_type, iterators_t> |
| using vcsn::cross_sequences< Sequences >::iterators_t = std::tuple<typename seq_t<Sequences>::iterator...> |
| using vcsn::cross_sequences< Sequences >::self_t = cross_sequences |
| using vcsn::cross_sequences< Sequences >::seq = vcsn::detail::index_sequence<I...> |
| using vcsn::cross_sequences< Sequences >::seq_t = std::remove_reference_t<Seq> |
| using vcsn::cross_sequences< Sequences >::sequences_t = std::tuple<Sequences...> |
| using vcsn::cross_sequences< Sequences >::value_type = std::tuple<typename seq_t<Sequences>::value_type...> |
|
inline |
|
inline |
|
inline |
Definition at line 228 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin().
Referenced by vcsn::cross_sequences< Sequences >::begin_(), and vcsn::cross_sequences< Sequences >::cbegin_().
|
inline |
Definition at line 238 of file cross.hh.
References vcsn::cross_sequences< Sequences >::begin_(), vcsn::res, and vcsn::cross_sequences< Sequences >::skip_first_.
|
inlineprivate |
Definition at line 278 of file cross.hh.
References vcsn::cross_sequences< Sequences >::begin(), vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::begin().
|
inline |
Definition at line 215 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin_(), vcsn::res, and vcsn::cross_sequences< Sequences >::skip_first_.
Referenced by vcsn::cross_sequences< Sequences >::begin(), and vcsn::cross_sequences< Sequences >::empty().
|
inlineprivate |
Definition at line 260 of file cross.hh.
References vcsn::cross_sequences< Sequences >::begin(), vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::cbegin().
|
inline |
Definition at line 223 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cend_().
Referenced by vcsn::cross_sequences< Sequences >::empty(), and vcsn::cross_sequences< Sequences >::end().
|
inlineprivate |
Definition at line 270 of file cross.hh.
References vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::cend().
|
inline |
Whether the sequence is empty.
Definition at line 252 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cbegin(), and vcsn::cross_sequences< Sequences >::cend().
|
inline |
Definition at line 233 of file cross.hh.
References vcsn::cross_sequences< Sequences >::cend().
Referenced by vcsn::cross_sequences< Sequences >::begin_(), vcsn::cross_sequences< Sequences >::cbegin_(), vcsn::cross_sequences< Sequences >::cend_(), and vcsn::cross_sequences< Sequences >::end_().
|
inline |
Definition at line 246 of file cross.hh.
References vcsn::cross_sequences< Sequences >::end_().
|
inlineprivate |
Definition at line 287 of file cross.hh.
References vcsn::cross_sequences< Sequences >::end(), and vcsn::cross_sequences< Sequences >::sequences_.
Referenced by vcsn::cross_sequences< Sequences >::end().
|
inline |
Whether to skip the first element.
Definition at line 209 of file cross.hh.
References vcsn::cross_sequences< Sequences >::skip_first_.
|
private |
The sequences we iterate upon.
Definition at line 295 of file cross.hh.
Referenced by vcsn::cross_sequences< Sequences >::begin_(), vcsn::cross_sequences< Sequences >::cbegin_(), vcsn::cross_sequences< Sequences >::cend_(), and vcsn::cross_sequences< Sequences >::end_().
|
static |
|
private |
Whether to skip the initial element.
Definition at line 298 of file cross.hh.
Referenced by vcsn::cross_sequences< Sequences >::begin(), vcsn::cross_sequences< Sequences >::cbegin(), and vcsn::cross_sequences< Sequences >::skip_first().