Namespaces
Variants

std::ranges::subrange<I,S,K>::next

Von de.cppreference.net
 
 
Ranges-Bibliothek
Range-Adapter
 
 
constexpr subrange next( std::iter_difference_t<I> n = 1 ) const&
    requires std::forward_iterator<I>;
(1) (seit C++20)
constexpr subrange next( std::iter_difference_t<I> n = 1 ) &&;
(2) (seit C++20)

Gibt ein subrange zurück, dessen begin_ inkrementiert (oder dekrementiert, falls n negativ ist) wurde. Die eigentliche Inkrementierungs- (oder Dekrementierungs-) Operation wird von advance() durchgeführt.

1) Gibt eine Kopie von *this zurück.
Äquivalent zu: auto tmp = *this;
tmp.advance(n);
return tmp;
.
2) Gibt ein subrange zurück, das von *this verschoben wurde.
Äquivalent zu: advance(n);
return std::move(*this);
.

Parameter

n - Anzahl der maximalen Inkremente des Iterators

Rückgabewert

Wie oben beschrieben.

Hinweise

Der Unterschied zwischen dieser Funktion und advance() besteht darin, dass letztere das Inkrementieren (oder Dekrementieren) direkt an Ort und Stelle durchführt.

Beispiel

#include <array>
#include <iterator>
#include <print>
#include <ranges>
int main()
{
    std::array arr{1, 2, 3, 4, 5, 6, 7};
    std::ranges::subrange sub{std::next(arr.begin(), 2), std::prev(arr.end(), 2)};
    std::println("1) sub: {}", sub);
    std::println("2) sub: {}", sub.next());
    std::println("3) sub: {}", sub.next(2));
}

Ausgabe:

1) sub: [3, 4, 5]
2) sub: [4, 5]
3) sub: [5]

Siehe auch

erhält eine Kopie des subrange mit seinem Iterator dekrementiert um eine gegebene Distanz
(öffentliche Elementfunktion)
bewegt den Iterator um eine gegebene Distanz vorwärts
(öffentliche Elementfunktion)
(C++11)
erhöht einen Iterator
(Funktions-Template)
erhöht einen Iterator um eine gegebene Distanz oder bis zu einer Grenze
(Algorithmus-Funktionsobjekt)