2011年9月3日土曜日

reverse_iterator

reverse_iteratorのメモ。

reverse_iteratorは通常のiterator(反復子)と逆向きに要素を横断するための逆転反復子。
図示すると以下の通り。





向きが逆なだけでなく、順方向と一部用法が違ったので注意。
eraseするとき、順方向なら

// std::set a_set;
std::set::iterator ite = a_set.begin();
a_set.erase(ite++);

こういう感じだが、reverseだと
std::set::reverse_iterator rev_ite = a_set.rbegin();
a_set.erase(--rev_ite.base());

になる。