C++ 概念: Iterator
来自cppreference.com
迭代器 (Iterator
) 概念描述可以用来标识和遍历一个容器元素的类型。
迭代器 (Iterator
) 是用于其他迭代器类型的基概念:输入迭代器 (InputIterator
) 、输出迭代器 (OutputIterator
) 、向前迭代器 (ForwardIterator
) 、双向迭代器 (BidirectionalIterator
) 及随机访问迭代器 (RandomAccessIterator
) 。可以把迭代器想象成指针的抽象。
[编辑] 要求
若下列条件成立,则类型 It
满足迭代器 (Iterator
)
- 类型
It
满足可复制构造 (CopyConstructible
) ,且 - 类型
It
满足可复制赋值 (CopyAssignable
) ,且 - 类型
It
满足可析构 (Destructible
) 且 - 类型
It
的左值满足可交换 (Swappable
) ,且 - std::iterator_traits<It> 拥有成员 typedefs
value_type
、difference_type
、reference
、pointer
和iterator_category
且
给定
- 类型
It
的左值r
,
下列表达式必须合法,且拥有其指定的效应:
表达式 | 返回类型 | 前提条件 |
---|---|---|
*r | 未指定 | r 可解引用(见下)
|
++r | It& | r 可增(表达式 ++r 的行为有定义)
|
[编辑] 可解引用的迭代器
表达式 *i 的行为得到定义的迭代器被称作可解引用。
下列条件下迭代器是不可解引用的
- 它们是尾后迭代器(包括数组后面一个位置的指针)或起始前迭代器。在特定实现中这些迭代器可能可解引用,但库决不假设它们能。
- 它们是孤立迭代器, 即是说,没有关联到任何序列的迭代器。空指针,还有默认构造指针(保有不确定的值)是孤立的。
- 它们被在引用它们之前的非法化迭代器操作非法化了。
[编辑] 参阅
指定该类型对象能自增并解引用 (概念) |