std::ranges::slide_view<V>::end
来自 cppreference.cn
< cpp | ranges | slide view
constexpr auto end() requires (!(/*simple-view*/<V> && /*slide-caches-nothing*/<const V>)); |
(1) | (since C++23) |
constexpr auto end() const requires /*slide-caches-nothing*/<const V>; |
(2) | (since C++23) |
返回一个 sentinel 或一个迭代器,表示 slide_view 的末尾。
1) 设 base_ 和 n_ 为底层数据成员。等价于
- If V models
slide-caches-nothing
, return iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);. - Otherwise, if V models
slide-caches-last
, return iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);. - Otherwise, if V models
common_range
, return iterator<false>(ranges::end(base_), ranges::end(base_), n_);. - Otherwise, return sentinel(ranges::end(base_));.
如果 V 建模 slide-caches-last,此函数会将结果缓存在 cached_end_ 中,以便在后续调用中使用。这是为提供 range 所需的摊销常数时间复杂度所必需的。
2) 等价于 begin() + ranges::range_difference_t<const V>(size()).
目录 |
[编辑] 参数
(无)
[编辑] 返回值
一个 sentinel 或一个迭代器,表示 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) |
返回一个 sentinel,指示范围的末尾 (定制点对象) |