std::ranges::slide_view<V>::end
Von de.cppreference.net
constexpr auto end()
requires (!(/*simple-view*/<V> && /*slide-caches-nothing*/<const V>));
|
(1) | (seit C++23) |
constexpr auto end() const
requires /*slide-caches-nothing*/<const V>;
|
(2) | (seit C++23) |
Gibt einen Sentinel oder einen Iterator zurück, der das Ende des slide_view darstellt.
1) Seien
base_ und n_ die zugrundeliegenden Datenmember. Äquivalent zu:
- Falls
Vdas Konzeptslide-caches-nothingmodelliert, dannreturn iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);. - Andernfalls, falls
Vdas Konzeptslide-caches-lastmodelliert, dannreturn iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);. - Andernfalls, falls
Vdas Konzept common_range modelliert, dannreturn iterator<false>(ranges::end(base_), ranges::end(base_), n_);. - Andernfalls
return sentinel(ranges::end(base_));.
Falls
V das Konzept slide-caches-last modelliert, zwischenspeichert diese Funktion das Ergebnis im cached_end_ zur Verwendung bei nachfolgenden Aufrufen. Dies ist notwendig, um die amortisierte konstante Zeitkomplexität bereitzustellen, die vom Konzept range gefordert wird.2) Äquivalent zu
begin() + ranges::range_difference_t<const V>(size()).Parameter
(keine)
Rückgabewert
Ein
Sentinel
oder ein
Iterator
, der das Ende der
slide_view
darstellt.
Beispiel
Diesen Code ausführen
#include <iostream> #include <ranges> int main() { static constexpr auto source = {'A', 'B', 'C', 'D'}; for (const auto subrange: source | std::views::slide(3)) { std::cout << "[ "; for (auto it = subrange.begin(); it != subrange.end(); ++it) std::cout << *it << ' '; std::cout << "]\n"; } }
Ausgabe:
[ A B C ] [ B C D ]
Siehe auch
|
gibt einen Iterator zum Anfang zurück
(öffentliche Elementfunktion) |
|
|
(C++20)
|
gibt einen Iterator zum Anfang eines Ranges zurück
(Anpassungspunktobjekt) |
|
(C++20)
|
gibt einen Sentinel zurück, der das Ende eines Ranges anzeigt
(Anpassungspunktobjekt) |