正向迭代器:
map<int, int>::iterator mit;
反向迭代器:
map<int, int>::reverse_iterator rit;
两者相差一个元素,从一个反向迭代器获得对应的正向迭代器需要使用 base() 方法。如下图所示:ri 是指向元素3的反向迭代器,而 i 是 ri.base() 所得到的正向迭代器。
先来分析如何将 reverse_iterator 转换为 iterator。如上图所示,我们想要删除元素3,而 ri.base() 所得到的正向迭代器 i 指向的其实 4 了,因而为了正确地删除元素 3,需要将ri往前(反向的)挪一个位置。也就是说,这一步的删除用法应为:
c.erase((++rit).base());
注意(++rit)要加括号
引用自
> 参考:[(104条消息) 反向迭代器删除元素_lougd的博客-CSDN博客]
https://blog.csdn.net/u011391040/article/details/50433237
侵删致歉。
标签:迭代,iterator,STL,rit,base,反向,ri From: https://www.cnblogs.com/jessicaland/p/16616661.html