std::ranges::drop_view<V>::begin
来自 cppreference.cn
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) 会将结果缓存在底层 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++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 3482 | C++20 | const 重载可以与非大小范围一起调用 | const 重载需要 sized_range |
[编辑] 另请参阅
返回一个迭代器或一个哨兵到末尾 (公共成员函数) | |
(C++20) |
返回指向范围开头的迭代器 (定制点对象) |
(C++20) |
返回指示范围末尾的哨兵 (定制点对象) |