次の方法で共有


move_iterator クラス

クラス テンプレート move_iterator は反復子のラッパーです。 move_iteratorは、格納されている反復子の逆参照演算子を右辺値参照に変換し、コピーを移動に変換する点を除き、ラップする反復子 (ストア) と同じ動作を提供します。 右辺値の詳細については、「右辺値参照宣言子: &&」をご覧ください。

構文

class move_iterator;

解説

このクラス テンプレートは、逆参照時以外は反復子のように動作するオブジェクトを表します。 これは、メンバー関数 base() を介してアクセスされる Iterator 型のランダム アクセス反復子を格納します。 move_iterator に対するすべての操作は、格納されている反復子で直接実行されます。ただし、operator* の結果は、value_type&& に暗黙的にキャストされ、右辺値参照が作成されます。

move_iteratorは、ラップされた反復子によって定義されていない操作が可能な場合があります。 これらの操作は使用しないでください。

コンストラクター

コンストラクター 説明
move_iterator move_iterator 型のオブジェクトのコンストラクター。

Typedefs

型名 説明
iterator_type テンプレート パラメーター RandomIterator のシノニム。
iterator_category 同じ名前の長い typename 式のシノニム、iterator_category は反復子の汎用機能を識別します。
value_type 同じ名前の長い typename 式のシノニム、value_type は反復子要素の型を表します。
difference_type 同じ名前の長い typename 式のシノニム、difference_type は要素の差分値を表すために必要な整数型を表します。
pointer テンプレート パラメーター RandomIterator のシノニム。
参照先 rvalue 参照 value_type&& のシノニム。

メンバー関数

メンバー関数 説明
base このメンバー関数は、この move_iterator によってラップされた、格納されている反復子を返します。

演算子

演算子 説明
move_iterator::operator* (reference)*base() を返します。
move_iterator::operator++ 格納されている反復子をインクリメントします。 正確な動作は、プリインクリメント操作とポストインクリメント操作のどちらであるかによって異なります。
move_iterator::operator-- 格納されている反復子をデクリメントします。 正確な動作は、事前宣言操作と事後宣言操作のどちらであるかによって異なります。
move_iterator::operator-> &**this を返します。
move_iterator::operator- 最初に現在位置から右側の値を減算することによって move_iterator(*this) -= を返します。
move_iterator::operator[] (reference)*(*this + off) を返します。 現在のベースからのオフセットを指定し、その位置の値を取得できます。
move_iterator::operator+ move_iterator(*this) += に値を返します。 ベースにオフセットを加算し、その位置の値を取得できます。
move_iterator::operator+= 右辺値を格納されている反復子に加算し、*this を返します。
move_iterator::operator-= 右辺値を格納されている反復子から減算し、*this を返します。

要件

ヘッダー: <iterator>

名前空間: std

move_iterator::base

この move_iterator の格納されている反復子を返します。

RandomIterator base() const;

解説

このメンバー関数は、格納されている反復子を返します。

move_iterator::difference_type

difference_type型は反復子の特徴difference_typeに基づくmove_iterator typedefであり、同じ意味で使用できます。

typedef typename iterator_traits<RandomIterator>::difference_type difference_type;

解説

この型は、反復子特性 typename iterator_traits<RandomIterator>::pointer の同意語です。

move_iterator::iterator_category

iterator_category型は反復子の特徴iterator_categoryに基づくmove_iterator typedefであり、同じ意味で使用できます。

typedef typename iterator_traits<RandomIterator>::iterator_category  iterator_category;

解説

この型は、反復子特性 typename iterator_traits<RandomIterator>::iterator_category の同意語です。

move_iterator::iterator_type

iterator_type は、クラス テンプレートの move_iterator のテンプレート パラメーター RandomIterator に基づいていて、代わりに互いに入れ替えて使用できます。

typedef RandomIterator iterator_type;

解説

この型は、テンプレート パラメーター RandomIteratorのシノニムです。

move_iterator::move_iterator

移動反復子を構築します。 格納されている反復子としてパラメーターを使用します。

move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);

パラメーター

right
格納されている反復子として使用する反復子。

解説

最初のコンストラクターは、格納されている反復子を既定のコンストラクターによって初期化します。 残りのコンストラクターは、格納されている反復子を base.base() によって初期化します。

move_iterator::operator+=

格納された反復子にオフセットを追加し、その格納された反復子が新しい現在位置にある要素を指すようにします。 その後、演算子は新しい現在の要素を移動します。

move_iterator& operator+=(difference_type _Off);

パラメーター

_Off
新しい現在位置を決定するために現在位置に追加するオフセット。

戻り値

新しい現在の要素を返します。

解説

演算子は、格納されている反復子に _Off を追加します。 その後、*this を返します。

move_iterator::operator-=

指定された数の前の要素の間で移動します。 この演算子は、格納された反復子からオフセットを減算します。

move_iterator& operator-=(difference_type _Off);

パラメーター

解説

演算子は *this += -_Off を評価します。 その後、*this を返します。

move_iterator::operator++

この move_iteratorに属する格納されている反復子をインクリメントします。 現在の要素は、postincrement 演算子によってアクセスされます。 次の要素は前置インクリメント演算子によってアクセスされます。

move_iterator& operator++();
move_iterator operator++(int);

パラメーター

解説

最初の (前置インクリメント) 演算子は格納されている反復子をインクリメントします。 その後、*this を返します。

2 番目の (後置インクリメント) 演算子は *this のコピーを作成し、++*this を評価します。 その後、コピーを返します。

move_iterator::operator+

任意の要素の数だけ前方へ進んだ反復子の位置を返します。

move_iterator operator+(difference_type _Off) const;

パラメーター

解説

演算子は move_iterator(*this) += _Offを返します。

move_iterator::operator[]

move iterator の範囲の要素への配列インデックスのアクセスを許可します。

reference operator[](difference_type _Off) const;

パラメーター

解説

この演算子は (reference)*(*this + _Off) を返します。

move_iterator::operator--

Predecrement と postdecrement メンバー演算子は、格納されている反復子でデクリメントを実行します。

move_iterator& operator--();
move_iterator operator--();

パラメーター

解説

最初のメンバー演算子 (predecrement) は、格納されている反復子をデクリメントします。 その後、*this を返します。

2 番目の (postdecrement) 演算子は、*this のコピーを作成し、--*this を評価します。 その後、コピーを返します。

move_iterator::operator-

格納されている反復子をデクリメントして、指定された値を返します。

move_iterator operator-(difference_type _Off) const;

パラメーター

解説

この演算子は move_iterator(*this) -= _Off を返します。

move_iterator::operator*

格納されている反復子を逆参照して値を返します。 これは、rvalue reference と同じように動作し、移動代入を実行します。 この演算子は、基本反復子から現在の要素を転送します。 後続の要素は、新しい現在の要素になります。

reference operator*() const;

解説

この演算子は (reference)*base() を返します。

move_iterator::operator->

通常の RandomIterator operator->と同様に、現在の要素に属するフィールドにアクセスできます。

pointer operator->() const;

解説

この演算子は &**this を返します。

move_iterator::pointer

pointer は、move_iterator のランダム反復子 RandomIterator に基づく typedef で、同意語として使用できます。

typedef RandomIterator  pointer;

解説

型は、RandomIterator の同意語。

move_iterator::reference

reference は、move_iteratorvalue_type&& に基づく typedef で、value_type&& の同義語として使用できます。

typedef value_type&& reference;

解説

この型は、右辺値参照である value_type&& のシノニムです。

move_iterator::value_type

value_type型は反復子の特徴value_typeに基づくmove_iterator typedefであり、同じ意味で使用できます。

typedef typename iterator_traits<RandomIterator>::value_type   value_type;

解説

この型は、反復子特性 typename iterator_traits<RandomIterator>::value_type の同意語です。

関連項目

<iterator>
左辺値と右辺値
移動コンストラクターと移動代入演算子 (C++)
C++ 標準ライブラリ リファレンス