std::ranges::drop_view<V>::begin
来自cppreference.com
constexpr auto begin() requires (!(__SimpleView<V> && |
(1) | (C++20 起) |
constexpr auto begin() const requires ranges::random_access_range<const V> && ranges::sized_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 <algorithm> #include <array> #include <iostream> #include <iterator> #include <ranges> int main() { std::array hi{ 'H','e','l','l','o',',',' ','C','+','+','2','0','!' }; std::ranges::for_each(hi, [](const char c){ std::cout << c; }); std::cout << '\n'; const auto c = std::distance(hi.begin(), std::ranges::find(hi, 'C')); auto cxx = std::ranges::drop_view{ hi, c }; std::cout << "*drop_view::begin() == '" << *cxx.begin() << "'\n"; // *cxx.begin() = 'c'; // 未定义: 'views' 要用作观察器 for (char c : cxx) { std::cout << c; } std::cout << '\n'; }
输出:
Hello, C++20! *drop_view::begin() == 'C' C++20!
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 3482 | C++20 | const 重载能以不具大小范围调用 | const 重载要求 sized_range
|
参阅
(C++20) |
返回指向末尾的迭代器或哨位 (公开成员函数) |
(C++20) |
返回指向范围起始的迭代器 (定制点对象) |
(C++20) |
返回指示范围结尾的哨位 (定制点对象) |