我有一个自定义容器类,我想写它iterator和const_iterator类.
我之前从未这样做过,但我找不到合适的方法.关于迭代器创建的指导原则是什么,我应该注意什么?
我也想避免代码重复(我觉得const_iterator并iterator分享很多东西;应该是另一个子类吗?).
脚注:我很确定Boost有什么可以缓解的,但我不能在这里使用它,因为很多愚蠢的原因.
3月21 日,标准委员会投票赞成批准P0174中std::iterator提议的弃用:
对于读者而言,很长的void参数序列不仅仅是简单地
typedef在类定义本身中提供预期的s,这是当前工作草案采用的方法,遵循c ++中设置的模式14
在c ++ 17之前std::iterator,鼓励继承从迭代器样板实现中删除乏味.但弃用将需要以下其中一项:
typedefsauto而不是依赖于迭代器来声明类型std::iterator_traits,可以更新,而继承工作std::iterator有人可以告诉我我应该期待哪些选项,因为我设计了自定义迭代器,着眼于c ++ 17兼容性?
在 C++ 中,一些 STL 容器,如 vector、map、string 可以被带有冒号的 for 循环遍历。
例如:
for(auto c:v)
当我在编写自定义容器时,我可以让它像 Java 那样遍历(只需要实现 Iterable)?