gpt4 book ai didi

c++ - reverse_iterator 是否继承自迭代器?

转载 作者:行者123 更新时间:2023-11-30 00:56:13 25 4
gpt4 key购买 nike

让它成为 std::list::iteratorstd::list::reverse_iterator。反向是从正向派生的吗?如果不是,那么为什么 list 的成员函数没有反向等价物?

提前致谢。

最佳答案

Let it be std::list::iterator and std::list::reverse_iterator. Is reverse one derived from forward?

不一定,它们可能(并且可能在大多数实现中)是不同的类型。迭代器一直被复制,这种继承会导致切片。此外,iterator 上的所有操作都应该是virtual 以避免不一致,否则效率低下。考虑一下,标准甚至禁止继承作为一种可能的实现是有意义的(也许它是间接的)。

更新:该标准为 std::reverse_iterator 类模板提供了定义,并强制要求 std::list::reverse_iterator 是这种模板的特化。继承不是一种可能的实现方式。

And if not then why there're not reverse equivalents for member functions of list?

因为您可以在 reverse_iterator 上调用 base() 以获得底层的常规 iteratorreverse_iterator 与其对应的 iterator i 之间的基本关系是 &*(reverse_iterator(i)) == &*(我 - 1).

关于c++ - reverse_iterator 是否继承自迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com