我用迭代器编写了自己的容器模板。我如何实现const_iterator?
template <class T>
class my_container {
private:
...
public:
my_container() : ... { }
~my_container() { }
class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
public: ...
答案 0 :(得分:4)
唯一的区别应该是当你取消引用const迭代器时,你得到一个const引用,而不是对容器中对象的引用。
答案 1 :(得分:2)
我发现实现迭代器的最简单方法是boost::iterator。如果你想自己动手,我认为签名应该是:
class const_iterator : public std::iterator<std::bidirectional_iterator_tag, const T> {
与实现相同(假设您在函数签名中使用reference_type等)
答案 2 :(得分:0)
Roger Pate,value_types“简单”。如果你看一下iterator_traits :: const_iterator&gt; :: reference,我怀疑你会看到const,我认为这将是“const int&amp;”。