我正在努力学习 C++,所以如果这个问题表明缺乏基础知识,请原谅我,你看,事实是,我缺乏基础知识。
我需要一些帮助来解决如何为我创建的类创建迭代器。
我有一个“形状”类,它有一个点容器。我有一个类’Piece’,它引用了一个形状并定义了一个形状的位置。 Piece 没有 Shape,它只是引用一个 Shape。
我希望它看起来像 Piece 是一个 Points 容器,它与它引用的 Shape 相同,但添加了 Piece 位置的偏移量。
我希望能够遍历 Piece 的点,就像 Piece 本身就是一个容器一样。我做了一些阅读,并没有找到任何对我有帮助的东西。我将非常感谢任何指示。
原文由 Howard May 发布,翻译遵循 CC BY-SA 4.0 许可协议
你应该使用 Boost.Iterators。它包含许多模板和概念,用于为现有的迭代器实现新的迭代器和适配器。我写 了一篇关于这个主题的文章;它在 2008 年 12 月的 ACCU 杂志上。它为您的问题讨论了一个(IMO)优雅的解决方案:使用 Boost.Iterators 从对象公开成员集合。
如果您只想使用 stl, Josuttis 书中 有一章介绍如何实现您自己的 STL 迭代器。