C++ named requirements: LegacyBidirectionalIterator
一个 LegacyBidirectionalIterator 是一种 LegacyForwardIterator ,它能够双向移动(即可递增和递减)。
若一个
LegacyBidirectionalIterator
it
源自某个
Container
,则该迭代器的
value_type
与容器的
value_type
相同,因此解引用操作(
*
it
)将获得容器的
value_type
。
目录 |
要求
类型
It
满足
LegacyBidirectionalIterator
若
-
类型
It满足 LegacyForwardIterator
并且,给定
-
a
和
b
,类型为
It的左值 -
reference,由 std:: iterator_traits < It > :: reference 表示的类型
以下表达式必须有效并具有其指定效果:
| 表达式 | 返回值 | 等价表达式 | 备注 |
|---|---|---|---|
| -- a |
It&
|
前置条件:
后置条件:
|
|
| a -- | 可转换为 const It & |
It temp
=
a
;
--
a
;
|
|
| * a -- |
reference
|
一个 可变 LegacyBidirectionalIterator 是指同时满足 LegacyOutputIterator 要求的 LegacyBidirectionalIterator 。
注释
起始迭代器不可递减,若计算 -- container. begin ( ) 将导致未定义行为。
双向迭代器不要求可解引用才能递减(特别是,尾后迭代器不可解引用但可以递减)。
概念为定义 std::iterator_traits ,特定义以下仅用于说明的概念。
其中仅用于说明的概念
|
(C++20 起) |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
|
LWG 299
( N3066 ) |
C++98 |
*
a
--
的返回类型要求
可转换为
T
|
将返回类型改为
reference
[1]
|
| LWG 383 | C++98 | 要求在 -- a 后 b 必须可解引用 | 改为要求 a 必须可解引用 |
|
LWG 1212
( N3066 ) |
C++98 |
*
a
--
的返回类型与
LegacyForwardIterator 要求的 * a ++ 返回类型不匹配 |
将返回类型改为
reference
|
参见
|
(C++20)
|
指定
forward_iterator
为双向迭代器,支持向后移动
(概念) |
| 迭代器库 | 提供迭代器、迭代器特征、适配器及工具函数的定义 |