std::ranges::ref_view
来自cppreference.com
定义于头文件 <ranges>
|
||
template<ranges::range R> requires std::is_object_v<R> |
(C++20 起) | |
ref_view
是某个其他 range 的元素的 view 。它包装到该 range
的引用。
数据成员
std::ranges::ref_view::r_
R* r_ = nullptr; /* exposition-only */ |
||
指向被引用范围的指针
成员函数
std::ranges::ref_view::ref_view
constexpr ref_view() noexcept = default; |
(1) | |
template<__NotSameAs<ref_view> T> requires std::convertible_to<T, R&> && requires { _FUN(std::declval<T>()); } |
(2) | |
名称 __NotSameAs
与 _FUN
仅为说明。 __NotSameAs<T, U>
当且仅当 !std::same_as<std::remove_cvref_t<T>, std::remove_cvref_t<U>> 才得到满足。函数 _FUN
声明为 void _FUN(R&); void _FUN(R&&) = delete; 。
参数
t | - | 要引用的范围 |
std::ranges::rev_view::base
constexpr R& base() const; |
||
等价于 return *r_;
std::ranges::ref_view::begin
constexpr ranges::iterator_t<R> begin() const; |
||
等价于 return ranges::begin(*r_);
std::ranges::ref_view::end
constexpr ranges::sentinel_t<R> end() const; |
||
等价于 return ranges::end(*r_);
std::ranges::ref_view::empty
constexpr bool empty() const requires requires { ranges::empty(*r_); }; |
||
等价于 return ranges::empty(*r_);
std::ranges::ref_view::size
constexpr auto size() const requires ranges::sized_range<R> |
||
std::ranges::ref_view::data
constexpr auto data() const requires ranges::contiguous_range<R> |
||
非成员函数
begin, end(std::ranges::ref_view)
friend constexpr ranges::iterator_t<R> begin(ref_view r); |
(1) | |
friend constexpr ranges::sentinel_t<R> end(ref_view r); |
(2) | |
1) 等价于 return r.begin();
2) 等价于 return r.end();
这些函数对通常无限定或有限定查找不可见,而且只能在 std::ranges::ref_view<R>
为参数的关联类时由参数依赖查找找到。
推导指引
template<class R> ref_view(R&) -> ref_view<R>; |
||
示例
本节未完成 原因:暂无示例 |
参阅
(C++11) |
可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器 (类模板) |
包含 range 的所有元素的 view (别名模板) (范围适配器对象) |