您是否必须在类似STL的类中实现多个迭代器?

时间:2011-09-05 13:13:32

标签: c++ stl

我对STL以及如何使用它非常熟悉。我的问题是......

如果我要实现自己的STL容器类型,内部迭代器是如何定义的? STL类倾向于具有顺序或随机访问迭代器,这些迭代器的const_版本以及流迭代器。

这些迭代器是否都在每个STL类中完全定义,或者是否存在某种基类来获取大部分迭代器功能?有没有人知道如何实现支持这些不同类型的迭代器的类的好参考?

2 个答案:

答案 0 :(得分:7)

通常,您只需要实施iteratorconst_iterator。 如果需要反向迭代器,可以使用它们获得 std::reverse_iterator的实例化。流迭代器将使用 operator>>operator<<;通常,它们不适合a 容器(并没有标准容器提供它们)。

答案 1 :(得分:4)

是的,您需要两个不同的迭代器才能完全符合stdlib。

您可以通过继承std::iterator获得大多数typedef,但这不会为您提供实际实施方面的任何帮助。

Boost.Iterator Facade尝试简化自己的迭代器定义,本教程非常有帮助。

如果没有帮助程序,您应该尝试这样做,您应该考虑迭代器模型的概念,然后查看C ++标准§24中的表。它们描述了您需要支持的所有操作以及预期的语义。