Namespaces
Variants

std::ranges::slide_view<V>::end

ja.cppreference.net より
 
 
Ranges ライブラリ
Range アダプタ
 
 
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 ]

関連項目

先頭を指すイテレータを返す
(公開メンバ関数)
範囲の先頭を指すイテレータを返す
(カスタマイゼーションポイントオブジェクト)
範囲の終端を示すセンチネルを返す
(カスタマイゼーションポイントオブジェクト)