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

Best practice for avoiding code duplication while implementing iterator and const_iterator classes

本文关键字:代码 最佳 迭代器 实现 const iterator      更新时间:2023-10-16

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

    一个人通常是用const_iterator来实现迭代器吗?是否使用某种trait类,最终将iterator和const_iterator定义为公共模板的不同实例?

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

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

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