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 指向的元素

 

 

  

 

posted @ 2018-11-28 19:09  KidyCharon  阅读(159)  评论(0编辑  收藏  举报