我查看了一些C容器(vector,deque,list,map,set),发现它们都没有实现
erase(reverse_iterator position)
有一种方法可以从reverse_iterator获取迭代器,如answer中所述.
但是为什么上面的容器没有用reverse_iterator参数实现擦除成员函数?
迭代器和reverse_iterator之间是否有任何显着差异,这使得这样的实现很难或者由于其他原因而没有实现?
几乎所有容器
函数都可以提出同样的问题:为什么不为反向迭代器实现它?答案可能是一个简单的事实,即反向迭代器可以通过base()
调用轻松转换为常规迭代器.将base()的负担放在
用户身上更有意义,而不是通过为每个单独的一个实现“反向”版本几乎使容器的
功能数量增加一倍.
有人可以说,它打破了通过反向迭代器处理这些容器的外部环境中容器的“普遍性”.但是从一开始,反向迭代器被设计为“不同的”,并且在除了最简单的上下文之外的所有情况下都不一定与普通迭代器兼容.