标准库头文件 <experimental/ranges/range>
来自 cppreference.com
< cpp | header | experimental
此头文件是 范围 库的一部分。
内容 |
[编辑] 范围概念
在
std::experimental::ranges 命名空间中定义 | |
指定一个类型是一个范围,也就是说,它提供了 begin 迭代器和 end 哨兵(概念) | |
指定一个范围以常数时间知道其大小 (概念) | |
指定一个范围是一个视图,也就是说,它具有常数时间的复制/移动/赋值 (概念) | |
指定范围具有相同的迭代器和哨兵类型 (概念) | |
指定范围的迭代器类型满足 InputIterator (概念) | |
指定范围的迭代器类型满足 OutputIterator (概念) | |
指定范围的迭代器类型满足 ForwardIterator (概念) | |
指定范围的迭代器类型满足 BidirectionalIterator (概念) | |
指定范围的迭代器类型满足 RandomAccessIterator (概念) |
[编辑] 范围访问
在
std::experimental::ranges 命名空间中定义 | |
返回范围开头的迭代器 (定制点对象) | |
返回范围结尾的迭代器 (定制点对象) | |
返回范围的反向迭代器 (定制点对象) | |
返回范围的反向结尾迭代器 (定制点对象) |
[编辑] 范围原语
在
std::experimental::ranges 命名空间中定义 | |
获取范围的大小,该范围的大小可以在常数时间内计算出来 (定制点对象) | |
检查范围是否为空 (定制点对象) | |
获取指向连续范围开头的指针 (定制点对象) | |
获取范围的迭代器和哨兵类型 (别名模板) |
[编辑] 概要
#include <experimental/ranges/iterator> namespace std { namespace experimental { namespace ranges { inline namespace v1 { namespace { constexpr /* unspecified */ begin = /* unspecified */; constexpr /* unspecified */ end = /* unspecified */; constexpr /* unspecified */ cbegin = /* unspecified */; constexpr /* unspecified */ cend = /* unspecified */; constexpr /* unspecified */ rbegin = /* unspecified */; constexpr /* unspecified */ rend = /* unspecified */; constexpr /* unspecified */ crbegin = /* unspecified */; constexpr /* unspecified */ crend = /* unspecified */; } namespace { constexpr /* unspecified */ size = /* unspecified */; constexpr /* unspecified */ empty = /* unspecified */; constexpr /* unspecified */ data = /* unspecified */; constexpr /* unspecified */ cdata = /* unspecified */; } template <class T> using iterator_t = decltype(ranges::begin(declval<T&>())); template <class T> using sentinel_t = decltype(ranges::end(declval<T&>())); template <class> constexpr bool disable_sized_range = false; template <class T> struct enable_view { }; struct view_base { }; template <class T> concept bool Range = /* see definition */; template <class T> concept bool SizedRange = /* see definition */; template <class T> concept bool View = /* see definition */; template <class T> concept bool BoundedRange = /* see definition */; template <class T> concept bool InputRange = /* see definition */; template <class R, class T> concept bool OutputRange = /* see definition */; template <class T> concept bool ForwardRange = /* see definition */; template <class T> concept bool BidirectionalRange = /* see definition */; template <class T> concept bool RandomAccessRange = /* see definition */; }}}}