std::ranges::cartesian_product_view<First, Vs...>::iterator<Const>::next, std::ranges::cartesian_product_view<First, Vs...>::iterator<Const>::prev, std::ranges::cartesian_product_view<First, Vs...>::iterator<Const>::distance_from
Inhalt |
std::ranges::cartesian_product_view::iterator::next
| template< std::size_t N = sizeof...(Vs) > constexpr void /*next*/(); |
(seit C++23) (nur Exposition*) |
|
Wenn mit dem Standard-Template-Parameter aufgerufen, wird rekursiv das nächste Element (das Tupel von Iteratoren) in cartesian_product_view generiert.
Sei current_ das zugrundeliegende Tupel von Iteratoren. Äquivalent zu
auto& it = std::get<N>(current_); ++it; if constexpr (N > 0) { if (it == ranges::end(std::get<N>(parent_->bases_))) { it = ranges::begin(std::get<N>(parent_->bases_)); next<N - 1>(); } }
Wird in den folgenden nicht-statischen Member-Funktionen verwendet
- ranges::cartesian_product_view::
operator+
std::ranges::cartesian_product_view::iterator::prev
| template< std::size_t N = sizeof...(Vs) > constexpr void /*prev*/(); |
(seit C++23) (nur Exposition*) |
|
Wenn mit dem Standard-Template-Parameter aufgerufen, wird rekursiv das vorherige Element (das Tupel von Iteratoren) in cartesian_product_view generiert.
Sei current_ das zugrundeliegende Tupel von Iteratoren. Äquivalent zu
auto& it = std::get<N>(current_); if constexpr (N > 0) { if (it == ranges::begin(std::get<N>(parent_->bases_))) { it = /*cartesian-common-arg-end*/(std::get<N>(parent_->bases_)); prev<N - 1>(); } } --it;
Wird in den folgenden nicht-statischen Member-Funktionen verwendet
- ranges::cartesian_product_view::
operator-
std::ranges::cartesian_product_view::iterator::distance_from
| template< class Tuple > constexpr difference_type |
(seit C++23) (nur Exposition*) |
|
Gibt den "Abstand" (d.h. die Anzahl der "Hüpfer") zwischen zwei Iteratoren zurück.
Seien
-
parent_sei der zugrundeliegende Zeiger aufcartesian_product_view - /*scaled-size*/(N) sei
- das Produkt von static_cast<difference_type>(ranges::size(std::get<N>(parent_->bases_))) und /*scaled-size*/(N + 1), wenn N ≤ sizeof...(Vs), andernfalls
- static_cast<difference_type>(1);
- /*scaled-distance*/(N) sei das Produkt von static_cast<difference_type>(std::get<N>(current_) - std::get<N>(t)) und /*scaled-size*/(N + 1);
- /*scaled-sum*/ sei die Summe von /*scaled-distance*/(N) für jede ganze Zahl 0 ≤ N ≤ sizeof...).
Rückgabewert: /*scaled-sum*/.
Das Verhalten ist undefiniert, wenn /*scaled-sum*/ durch difference_type dargestellt werden kann.
Wird in den folgenden Funktionen verwendet
-
operator-(const /*iterator*/&, const /*iterator*/&) -
operator-(const /*iterator*/&, std::default_sentinel_t)
Parameter
| t | - | ein Tupel von Iteratoren, um den Abstand zu finden |