创建我自己的迭代器

新手上路,请多包涵

我正在努力学习 C++,所以如果这个问题表明缺乏基础知识,请原谅我,你看,事实是,我缺乏基础知识。

我需要一些帮助来解决如何为我创建的类创建迭代器。

我有一个“形状”类,它有一个点容器。我有一个类’Piece’,它引用了一个形状并定义了一个形状的位置。 Piece 没有 Shape,它只是引用一个 Shape。

我希望它看起来像 Piece 是一个 Points 容器,它与它引用的 Shape 相同,但添加了 Piece 位置的偏移量。

我希望能够遍历 Piece 的点,就像 Piece 本身就是一个容器一样。我做了一些阅读,并没有找到任何对我有帮助的东西。我将非常感谢任何指示。

原文由 Howard May 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 485
2 个回答

你应该使用 Boost.Iterators。它包含许多模板和概念,用于为现有的迭代器实现新的迭代器和适配器。我写 了一篇关于这个主题的文章;它在 2008 年 12 月的 ACCU 杂志上。它为您的问题讨论了一个(IMO)优雅的解决方案:使用 Boost.Iterators 从对象公开成员集合。

如果您只想使用 stl, Josuttis 书中 有一章介绍如何实现您自己的 STL 迭代器。

原文由 Roel 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以阅读这篇 ddj 文章

基本上,从 std::iterator 继承来为您完成大部分工作。

原文由 gbjbaanb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题