Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
constexpr subrange next ( std:: iter_difference_t < I > n = 1 ) const &
erfordert std:: forward_iterator < I > ;
(1) (seit C++20)
constexpr subrange next ( std:: iter_difference_t < I > n = 1 ) && ;
(2) (seit C++20)

Gibt einen subrange zurück, dessen begin_ inkrementiert (oder dekrementiert, falls n negativ ist) wird. Die tatsächliche Inkrementierungs- (oder Dekrementierungs-) Operation wird durch advance() durchgeführt.

1) Gibt eine Kopie von * this zurück.
Entspricht: auto tmp = * this ;
tmp. advance ( n ) ;
return tmp ;
.
2) Gibt einen subrange zurück, der von * this verschoben wurde.
Entspricht: advance ( n ) ;
return std :: move ( * this ) ;
.

Inhaltsverzeichnis

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)