1. 程式人生 > >Effective_STL 學習筆記(二十八) 瞭解如何通過 reverse_iterator 的 base 得到 iterator

Effective_STL 學習筆記(二十八) 瞭解如何通過 reverse_iterator 的 base 得到 iterator

 

要實現在一個 reverse_iterator ri 指出的位置上插入新元素,在 ri.base() 指向的位置插入就行了。對於 insert 操作而言,ri 和 ri.base() 是等價的,而且 ri.base() 真的是 ri 真的是 ri 對應的iterator

1   vector<int>::iterator i( ri.base() ); // i和ri.base()一樣

 

要實現在一個 reverse_iterator ri 指出的位置上刪除元素,就應該刪除 ri.base() 的前一個元素。對於刪除操作而言,ri 和 ri.base()並不等價,而且 ri.base() 不是 ri 對應的 iterator

1   vector<int>::reverse_iterator ri = find( v.rbegin, v.rend(), 3 );  // ri 指向3
2   v.erase( (++ri).base() );        // 刪除 ri 指向的元素