std::basic_const_iterator
|
在标头
<iterator> 定义 |
||
|
template< std::input_iterator Iter >
class basic_const_iterator; |
(C++23 起) | |
std::basic_const_iterator 是一个迭代器适配器,其行为与底层迭代器(必须至少是 老式输入迭代器 (LegacyInputIterator) 或实现 input_iterator)完全相同,只是取消引用会将底层迭代器返回的值转换为不可变值。std::basic_const_iterator 的特化是常量迭代器,也就是说,迭代器永远不能用作输出迭代器,因为不允许修改元素。
成员类型
| 成员类型 | 定义 |
iterator_category |
如果
否则没有成员 |
iterator_concept |
|
value_type |
std::iter_value_t<Iter> |
difference_type |
std::iter_difference_t<Iter> |
reference (private) |
std::iter_const_reference_t<Iter> (仅用于阐述的成员类型*) |
成员对象
| 成员名 | 定义 |
current (private) |
base() 从中复制或移动的底层迭代器(仅用于阐述的成员对象*) |
成员函数
| 构造新的迭代器适配器 (公开成员函数) |
|
| 赋值另一迭代器适配器 (公开成员函数) |
|
| 访问底层迭代器 (公开成员函数) |
|
| 访问被指向的元素 (公开成员函数) |
|
| 按索引访问元素 (公开成员函数) |
|
| 推进或回退迭代器 (公开成员函数) |
非成员函数
| 比较迭代器 (函数模板) |
|
| 令迭代器前进 (函数模板) |
|
| 计算两个迭代器适配器间的距离 (函数模板) |
|
|
(C++20)
|
转型解引用底层迭代器的结果为其所关联的右值引用类型 (函数) |
辅助类
确定迭代器和经过调整的 basic_const_iterator 类型的通用类型(类模板特化) |
辅助别名模板
|
template< std::input_iterator I >
using const_iterator = /* see description */; |
(C++23 起) | |
如果 I 实现 constant-iterator(仅用于阐述的概念),那么 const_iterator<I> 代表类型 I。否则是 basic_const_iterator<I>。
|
template< std::semiregular S >
using const_sentinel = /* see description */; |
(C++23 起) | |
如果 S 实现 input_iterator,那么 const_sentinel<S> 代表 const_iterator<S>。否则是 S。
辅助函数模板
|
template< std::input_iterator T >
constexpr const_iterator<T> make_const_iterator( I it ) { return it; } |
(C++23 起) | |
|
template< std::semiregular S >
constexpr const_sentinel<S> make_const_sentinel( S s ) { return s; } |
(C++23 起) | |
示例
| 本节未完成 原因:example |