std::ranges::drop_view<V>::begin
来自 cppreference.cn
constexpr auto begin() requires (!(/*simple-view*/<V> && |
(1) | (since C++20) |
constexpr auto begin() const requires ranges::random_access_range<const V> && |
(2) | (since C++20) |
返回 drop_view
的首个元素的迭代器,即底层视图的第 Nth 个元素的迭代器,或者如果底层视图的元素少于 N 个,则返回底层视图的末尾迭代器。
如果 V
不是 random_access_range
或 sized_range
,为了提供 range
概念要求的均摊常数时间复杂度,重载 (1) 会将结果缓存在底层 cache_
对象中,以便在后续调用中使用。
目录 |
[编辑] 返回值
ranges::next(ranges::begin(base_
),
count_
, ranges::end(base_
)).
[编辑] 示例
运行此代码
#include <array> #include <concepts> #include <iostream> #include <iterator> #include <ranges> void println(std::ranges::range auto const& range) { for (auto const& elem : range) std::cout << elem; std::cout << '\n'; } int main() { std::array hi{'H', 'e', 'l', 'l', 'o', ',', ' ', 'C', '+', '+', '2', '0', '!'}; println(hi); const auto pos = std::distance(hi.begin(), std::ranges::find(hi, 'C')); auto cxx = std::ranges::drop_view{hi, pos}; std::cout << "*drop_view::begin() == '" << *cxx.begin() << "'\n"; // *cxx.begin() = 'c'; // undefined: 'views' are to be used as observers println(cxx); }
输出
Hello, C++20! *drop_view::begin() == 'C' C++20!
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 3482 | C++20 | const 重载可以与无大小范围一起调用 | const 重载需要 sized_range |
[编辑] 参见
返回指向末尾的迭代器或哨兵 (公共成员函数) | |
(C++20) |
返回指向范围开始的迭代器 (定制点对象) |
(C++20) |
返回指示范围末尾的哨兵 (定制点对象) |