C++ 命名要求: LegacyIterator
來自 cppreference.com
LegacyIterator 要求描述了可用於標識和遍歷容器元素的型別。
LegacyIterator 是其他迭代器型別所使用的基礎要求集:LegacyInputIterator、LegacyOutputIterator、LegacyForwardIterator、LegacyBidirectionalIterator 和 LegacyRandomAccessIterator。迭代器可以被視為指標的抽象。
所有迭代器類別都只要求在給定類別下以常數時間(均攤)可實現的功能。因此,迭代器的要求表和概念定義(C++20 起)不指定複雜度。
目錄 |
[編輯] 要求
如果型別 It
滿足 LegacyIterator,則
- 型別
It
滿足 CopyConstructible,並且 - 型別
It
滿足 CopyAssignable,並且 - 型別
It
滿足 Destructible,並且 - 型別
It
滿足 Swappable,並且 - std::iterator_traits<It> 具有成員 typedef
value_type
(C++20 之前)、difference_type
、reference
、pointer
和iterator_category
,並且 - 給定
r
,一個型別為It
的左值,以下表達式必須是有效的並具有其指定的效果
表示式 | 返回型別 | 前置條件 |
---|---|---|
*r | 未指定 | r 是可解引用的 |
++r | It& | r 是可遞增的(表示式 ++r 的行為已定義) |
概念對於 std::iterator_traits 的定義,定義了以下僅用於說明的概念。
其中,僅當 T& 是有效型別(特別是 |
(C++20 起) |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2437 | C++98 | 要求 *r 為 reference |
對輸出迭代器不要求 |
LWG 3420 | C++20 | 內部概念首先檢查 copyable |
只有當 requires 表示式為真時才檢查 copyable |
[編輯] 參閱
(C++20) |
指定型別物件可以被增量和解引用 (概念) |
迭代器庫 | 為迭代器、迭代器特性、介面卡和實用函式提供定義 |