std::ranges::slide_view<V>::end
From cppreference.com
< cpp | ranges | slide view
| 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から) |
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())と同等です。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
センチネルまたはイテレータ。これは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 ]
[編集] 関連項目
| 先頭へのイテレータを返す (public メンバ関数) | |
| (C++20) |
rangeの先頭を指すイテレータを返す (カスタマイゼーションポイントオブジェクト) |
| (C++20) |
rangeの終端を示す番兵を返す (カスタマイゼーションポイントオブジェクト) |