这是容器的模板,其大小有限制。
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某处的东西?
答案 0 :(得分:1)
一般不用于“东西”,但对于迭代器,有boost::iterator_facade
and boost::iterator_adapter
。前者使得从头开始编写迭代器变得更容易,后者对于在现有迭代器上构建是很方便的。