【发布时间】:2011-04-04 16:48:29
【问题描述】:
我有一个自定义容器类,我想为其编写 iterator 和 const_iterator 类。
我以前从未这样做过,也找不到合适的方法。关于迭代器创建的准则是什么?我应该注意什么?
我还想避免代码重复(我觉得const_iterator 和iterator 共享很多东西;一个应该继承另一个吗?)。
脚注:我很确定 Boost 可以缓解这种情况,但由于许多愚蠢的原因,我不能在这里使用它。
【问题讨论】:
-
@DumbCoder:在 C++ 中,通常希望有符合 STL 的迭代器,因为它们可以很好地与 STL 提供的所有现有容器和算法一起工作。虽然概念相似,但与 GoF 提出的模式存在一些差异。
-
这些答案的复杂性表明,C++ 要么是一门不值得升读本科生家庭作业的语言,要么答案过于复杂和错误。 Cpp中必须有更简单的方法吗?就像之前的 CMake 和 Automake 相对于 make 一样,从 python 原型中提取的原始 C 似乎比这容易得多。
-
@Chris C++ 当然值得。 C++ 的复杂性和学习曲线是对其极其优化的抽象的相对独特属性的一种支付。有人说零成本抽象,在许多情况下,这正是现代 C++ 中发生的事情。
-
@PavelŠimerda 哈哈是的,我完全不同意我在这一点上的评论。我想我更多的是按照“必须有更简单的方法”来思考
标签: c++ iterator const-iterator