C++ 命名要求: LegacyBidirectionalIterator
一個 LegacyBidirectionalIterator 是一個 LegacyForwardIterator,它可以雙向移動(即可以遞增和遞減)。
如果一個 LegacyBidirectionalIterator it 源自一個 Container,那麼 it 的 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 是一個 LegacyBidirectionalIterator,它還滿足 LegacyOutputIterator 的要求。
[編輯] 注意
起始迭代器不可遞減,如果計算 --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 是雙向迭代器,支援向後移動(概念) |
迭代器庫 | 為迭代器、迭代器特性、介面卡和實用函式提供定義 |