有没有办法继承迭代器的东西

Is there a way to inherit iterator stuff

本文关键字:迭代器 继承 有没有      更新时间:2023-10-16

这是一个容器的模板,对其大小有限制。

template <class T, int MAXSIZE>
class svector {
class iterator : public std::iterator<std::input_iterator_tag, value_type> {
public:
    iterator( T* cptr );
    iterator( const iterator& mit);
    bool operator==(const iterator& rhs) const;
    bool operator!=(const iterator& rhs) const;
    T operator*();
    iterator& operator++();
    iterator operator++(int);
protected:
    T* eleptr;
};
svector();
svector( const svector& vec);
virtual ~svector();
svector& operator=( const svector& rhs );
iterator begin();
iterator end();
// more
};

如您所见,还有一个迭代器,用于 std::iterator 的子类化。但是,您不能从这个"标记"类继承任何内容,而我有勇敢地实现了你在这里看到的一切。有没有继承的方法来自 STL 某处的东西?

不是一般的"东西",但对于迭代器,有boost::iterator_facadeboost::iterator_adapter.前者使从头开始编写迭代器变得更加容易,后者对于在现有迭代器上进行构建非常方便。