在实现迭代器和const_iterator类时避免代码重复的最佳实践

时间:2016-11-08 13:39:27

标签: c++ const class-design code-duplication

在实施iteratorconst_iterator或类似的类对时,避免代码重复的最佳做法是什么?

  • 是否通常使用大量const_casts来实现使用const_iterator的迭代器?
  • 是否使用某种traits类并最终将iterator和const_iterator定义为公共模板的不同实例?

这似乎是一个常见的问题,有一个规范的解决方案,但我没有找到任何专门的文章。

1 个答案:

答案 0 :(得分:2)

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

查看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;
};