std::basic_const_iterator

来自cppreference.com
< cpp‎ | iterator
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
工具
迭代器适配器
流迭代器
迭代器定制点
迭代器操作
(C++11)
(C++11)
范围访问
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
 
在标头 <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

如果 Iter 实现 forward_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 起)

示例