std::ranges::slide_view<V>::end
ja.cppreference.net より
constexpr auto end()
requires (!(/*simple-view*/<V> && /*slide-caches-nothing*/<const V>));
|
(1) | (C++23 から) |
constexpr auto end() const
requires /*slide-caches-nothing*/<const V>;
|
(2) | (C++23 から) |
sentinel または iterator を返します。これは slide_view の終端を表します。
1)
base_ と n_ を内部データメンバとします。以下と同等です。
Vがslide-caches-nothingのモデルとなる場合、return iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);。- そうでなく、
Vがslide-caches-lastのモデルとなる場合、return iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);。 - そうでなく、
Vが common_range のモデルとなる場合、return iterator<false>(ranges::end(base_), ranges::end(base_), n_);。 - そうでない場合、
return sentinel(ranges::end(base_));。
V が slide-caches-last のモデルとなる場合、この関数は結果を cached_end_ 内にキャッシュし、以降の呼び出しで使用します。これは range によって要求される償却定数時間の複雑性を提供するために必要です。
2)
begin() + ranges::range_difference_t<const V>(size()) と同等です。
パラメータ
(なし)
戻り値
sentinel
または
iterator
を表し、
slide_view
の終端を示す。
例
このコードを実行
#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"; } }
出力:
[ A B C ] [ B C D ]
関連項目
|
先頭を指すイテレータを返す
(公開メンバ関数) |
|
|
(C++20)
|
範囲の先頭を指すイテレータを返す
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
範囲の終端を示すセンチネルを返す
(カスタマイゼーションポイントオブジェクト) |