我对STL以及如何使用它非常熟悉。我的问题是......
如果我要实现自己的STL容器类型,内部迭代器是如何定义的? STL类倾向于具有顺序或随机访问迭代器,这些迭代器的const_版本以及流迭代器。
这些迭代器是否都在每个STL类中完全定义,或者是否存在某种基类来获取大部分迭代器功能?有没有人知道如何实现支持这些不同类型的迭代器的类的好参考?
答案 0 :(得分:7)
通常,您只需要实施iterator
和const_iterator
。
如果需要反向迭代器,可以使用它们获得
std::reverse_iterator
的实例化。流迭代器将使用
operator>>
和operator<<
;通常,它们不适合a
容器(并没有标准容器提供它们)。
答案 1 :(得分:4)
是的,您需要两个不同的迭代器才能完全符合stdlib。
您可以通过继承std::iterator
获得大多数typedef,但这不会为您提供实际实施方面的任何帮助。
Boost.Iterator Facade尝试简化自己的迭代器定义,本教程非常有帮助。
如果没有帮助程序,您应该尝试这样做,您应该考虑迭代器模型的概念,然后查看C ++标准§24中的表。它们描述了您需要支持的所有操作以及预期的语义。