28項 reverse_iteratorの基底iteratorの使い方を理解しよう

reverse_iteratorの基底iteratorの使い方を理解しよう



reverse_iteratorをbaseでiteratorに変換する下のコードを考えます。

typedef vector<int>::iterator itr;
typedef vector<int>::reverse_iterator ritr;

vector<int> v;
for (int i = 1; i <= 5; i++)
	v.push_back(i);

ritr ri = find(v.rbegin(), v.rend(), 3);
itr i(ri.base());                    //iteratorに変換  

このコードの実行結果は、次の画像のようになります。
f:id:skru_y:20140225014145p:plain
iとriは別の要素を指すことになります。
例えばriの指す要素を削除するときは、次のように書きます。

v.erase((++ri).base());