C++ named requirements: ReversibleContainer
ReversibleContainer は、 Container であり、 LegacyBidirectionalIterator または LegacyRandomAccessIterator の要件を満たすイテレータを持つものです。このようなイテレータにより、 ReversibleContainer は逆順に走査することが可能となります。
目次 |
要件
型が ReversibleContainer を満たすのは、 Container を満たし、そのイテレータ型が双方向またはランダムアクセスの イテレータカテゴリ に属し、以下の型と値が与えられた場合に、下記の表の意味論的および計算量の要件が満たされる場合です:
| 型 | 定義 |
X
|
ReversibleContainer 型 |
T
|
X
の
value_type
|
| 値 | 定義 |
| a |
型
X
の値
|
型
| 名前 | 型 | 要件 |
|---|---|---|
| typename X :: reverse_iterator | std:: reverse_iterator < X :: iterator > |
値型
が
T
であるイテレータ型
|
| typename X :: const_reverse_iterator | std:: reverse_iterator < X :: const_iterator > |
値型
が
T
である定数イテレータ型
|
式
以下の表における型
reverse_iterator
および
const_reverse_iterator
は、それぞれ
typename
X
::
reverse_iterator
および
typename
X
::
const_reverse_iterator
を表します。
| 式 | 型 | セマンティクス | 計算量 |
|---|---|---|---|
| a. rbegin ( ) |
reverse_iterator
const_reverse_iterator
(定数オブジェクトの場合)
|
reverse_iterator ( a. end ( ) ) | 定数時間 |
| a. rend ( ) |
reverse_iterator
const_reverse_iterator
(定数オブジェクトの場合)
|
reverse_iterator ( a. begin ( ) ) | 定数時間 |
| a. crbegin ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rbegin ( ) | 定数時間 |
| a. crend ( ) |
const_reverse_iterator
|
const_cast < const X & > ( a ) . rend ( ) | 定数時間 |
ライブラリ型
以下の標準ライブラリ型は ReversibleContainer 要件を満たします:
|
(C++11)
|
固定サイズのインプレース連続配列
(クラステンプレート) |
|
両端キュー
(クラステンプレート) |
|
|
双方向リンクリスト
(クラステンプレート) |
|
|
サイズ変更可能な連続配列
(クラステンプレート) |
|
|
(C++26)
|
サイズ変更可能、固定容量、インプレース連続配列
(クラステンプレート) |
|
キーと値のペアのコレクション、キーでソート、キーは一意
(クラステンプレート) |
|
|
キーと値のペアのコレクション、キーでソート
(クラステンプレート) |
|
|
一意のキーのコレクション、キーでソート
(クラステンプレート) |
|
|
キーのコレクション、キーでソート
(クラステンプレート) |
例
以下の例は、 vector ( レガシーランダムアクセスイテレータ を持つ)を逆順に反復処理します。
#include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4, 1, 5, 9}; for (std::vector<int>::const_reverse_iterator i{v.crbegin()}; i != v.crend(); ++i) std::cout << *i << ' '; std::cout << '\n'; }
出力:
9 5 1 4 1 3
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2105 | C++98 |
typename
X
::
const_reverse_iterator
は値型
const
T
の
イテレータ型であることが要求されていた |
値型
T
の定数
イテレータ型であることが要求される |