让它成为std::list::iterator和std::list::reverse_iterator.反向派来自前锋吗?如果没有那么为什么没有相反的成员函数list?
提前致谢.
让它成为std :: list :: iterator和std :: list :: reverse_iterator.反向派来自前锋吗?
不一定,它们可能(并且可能在大多数实现中)不同类型.迭代器一直被复制,这种继承会导致切片.此外,所有操作iterator应该是virtual为了避免不一致,这将是低效的.考虑到这一点,标准甚至禁止继承作为一种可能的实现(也许是间接的)也是有意义的.
更新:标准提供了std::reverse_iterator类模板的定义,并且强制要求std::list::reverse_iterator是此类模板的特化.继承不是可能的实现.
如果没有那么为什么列表的成员函数没有相反的等价物呢?
因为你可以调用base()a reverse_iterator来获取底层的常规iterator.a reverse_iterator与其对应的基本关系iterator i是&*(reverse_iterator(i)) == &*(i - 1).
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |