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

Arm*_*yan 6 c++ class-design const code-duplication

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

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

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

Ola*_*che 2

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

看看GNU libstdc++ 的实现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;
};
Run Code Online (Sandbox Code Playgroud)