c++ - 在实现 iterator 和 const_iterator 类时避免代码重复的最佳实践

标签 c++ constants class-design code-duplication

<分区>

在实现诸如 iteratorconst_iterator 或类似的类对时,避免代码重复的最佳实践是什么?

  • 人们是否通常使用大量 const_casts 根据 const_iterator 来实现迭代器?
  • 是否使用了某种特征类并最终将 iterator 和 const_iterator 定义为通用模板的不同实例?

这似乎是一个足够普遍的问题,需要一个规范的解决方案,但我没有找到任何专门针对该问题的文章。

最佳答案

我没有任何实现迭代器的经验,尽管我认为这与其他项目类似。重构公共(public)代码等

查看GNU libstdc++'s实现std::vector::iterator

#include <bits/stl_iterator_base_funcs.h>
// ...
template ... class vector : ... {
    typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator;
    typedef __gnu_cxx::__normal_iterator<const_pointer, vector> const_iterator;
};

关于c++ - 在实现 iterator 和 const_iterator 类时避免代码重复的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488402/

相关文章:

java - 关于私有(private)数组列表和其他此类结构的最佳实践

class-design - 什么构成了 POJO/POCO 中的富域模型?

c++ - 向char添加正数会意外降低其值

c++ - 在 excel 中使用 C++ 2010 dll

c++: "pointer to const"指向的对象是否被认为是不变的或只是不可修改的?

Java类设计支持多值选项

c++ - 当所有变量都是同一类型时,为什么要进行类型转换?

c++ - 程序可以使用管道来回通信吗?

python - Django - 如何在应用程序中共享配置常量?

c - 十六进制 float ,四舍五入