std::ranges::drop_view<V>::begin
来自cppreference.com
constexpr auto begin() requires (!(/*simple-view*/<V> && |
(1) | (C++20 起) |
constexpr auto begin() const requires ranges::random_access_range<const V> && |
(2) | (C++20 起) |
返回指向 drop_view
的首元素的迭代器,即指向底层视图第 N 元素的迭代器,或若它有少于 N 个元素则为指向底层视图末尾的迭代器。
若 V
不是 random_access_range
或 sized_range
,为提供 range
概念所要求的的均摊常数时间复杂度,重载 (1) 在 drop_view
对象内缓存结果以供后继调用。
参数
(无)
返回值
ranges::next(ranges::begin(base_), count_, ranges::end(base_)),其中 base_
为底层视图,而 count_
为要跳过的元素数。
示例
运行此代码
#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'; // 未定义: 'views' 要用作观察器 println(cxx); }
输出:
Hello, C++20! *drop_view::begin() == 'C' C++20!
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3482 | C++20 | const 重载能以不具大小范围调用 | const 重载要求 sized_range
|
参阅
返回 指向末尾的迭代器或哨位 (公开成员函数) | |
(C++20) |
返回指向范围起始的迭代器 (定制点对象) |
(C++20) |
返回指示范围结尾的哨位 (定制点对象) |