std::ranges::subrange<I,S,K>::prev
Von cppreference.com
| constexpr subrange prev( std::iter_difference_t<I> n = 1 ) const requires std::bidirectional_iterator<I>; |
(seit C++20) | |
Gibt eine Kopie von *this zurück, deren begin_ dekrementiert wird (oder inkrementiert, wenn n negativ ist). Die eigentliche Dekrementierung (oder Inkrementierung) wird durch advance() durchgeführt.
Entspricht:auto tmp = *this;
tmp.advance(-n);
return tmp;.
Inhalt |
[edit] Parameter
| n | - | Anzahl der Dekrementierungen des Iterators |
[edit] Rückgabewert
Wie oben beschrieben.
[edit] Anmerkungen
Der Unterschied zwischen dieser Funktion und advance() besteht darin, dass letztere die Dekrementierung (oder Inkrementierung) direkt vornimmt.
[edit] Beispiel
Führen Sie diesen Code aus
#include <iterator> #include <list> #include <print> #include <ranges> int main() { std::list list{1, 2, 3, 4, 5}; std::ranges::subrange sub{std::next(list.begin(), 2), std::prev(list.end(), 2)}; std::println("{} {} {}", sub, sub.prev(), sub.prev(2)); }
Ausgabe
[3] [2, 3] [1, 2, 3]
[edit] Siehe auch
holt eine Kopie des subrange, bei der der Iterator um einen gegebenen Abstand avanciert wurde(public member function) | |
| verschiebt den Iterator um den gegebenen Abstand (public member function) | |
| (C++11) |
dekrementiert einen Iterator (Funktionsvorlage) |
| (C++20) |
dekrementiert einen Iterator um eine gegebene Distanz oder zu einer Grenze (Algorithmus-Funktionsobjekt) |