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に変換
このコードの実行結果は、次の画像のようになります。
iとriは別の要素を指すことになります。
例えばriの指す要素を削除するときは、次のように書きます。
v.erase((++ri).base());