在实现迭代器和 const_iterator 类 时避免代码重复的最佳实践
Best practice for avoiding code duplication while implementing iterator and const_iterator classes
在实施 iterator
和 const_iterator
或类似的 class 对时,避免代码重复的最佳做法是什么?
- 是否通常使用大量 const_casts 根据 const_iterator 来实现迭代器?
- 是否有人使用某种特征 class 并最终将迭代器和 const_iterator 定义为通用模板的不同实例?
这似乎是一个足够普遍的问题,需要一个规范的解决方案,但我没能找到专门针对该问题的文章。
我没有任何实现迭代器的经验,尽管我认为这与其他项目类似。重构公共代码等
正在查看GNU libstdc++'s implementation of 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;
};
在实施 iterator
和 const_iterator
或类似的 class 对时,避免代码重复的最佳做法是什么?
- 是否通常使用大量 const_casts 根据 const_iterator 来实现迭代器?
- 是否有人使用某种特征 class 并最终将迭代器和 const_iterator 定义为通用模板的不同实例?
这似乎是一个足够普遍的问题,需要一个规范的解决方案,但我没能找到专门针对该问题的文章。
我没有任何实现迭代器的经验,尽管我认为这与其他项目类似。重构公共代码等
正在查看GNU libstdc++'s implementation of 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;
};