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

  

猜你喜欢

转载自www.cnblogs.com/kidycharon/p/10034007.html
今日推荐