因此,作为课程作业,我正在重新实现std::vector
,而我在宣布原型方面遇到了麻烦:
iterator insert ( iterator position, const T& x );
我的迭代器类的模板看起来像这样
template<typename T>
class VectorIterator : public std::iterator<std::input_iterator_tag, T>
我的vector类的模板看起来像这样
template<typename T>
class Vector
如何声明insert的原型以返回std::iterator
而不是我自己的VectorIterator
类?我当然会返回我自己的VectorIterator类的实例。
答案 0 :(得分:4)
该函数不返回std::iterator
;它返回std::vector<T, Alloc>::iterator
。您需要在VectorIterator
:
Vector
template <typename T>
class Vector {
typedef VectorIterator<T> iterator;
};
这是insert
函数的返回类型。 iterator
规范中对const_iterator
和std::vector
的任何引用都是您需要提供的typedef。