如何声明返回std迭代器的函数原型?

时间:2011-01-22 18:59:19

标签: c++ stl vector polymorphism

因此,作为课程作业,我正在重新实现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类的实例。

1 个答案:

答案 0 :(得分:4)

该函数不返回std::iterator;它返回std::vector<T, Alloc>::iterator。您需要在VectorIterator

中输入您的Vector
template <typename T>
class Vector {
    typedef VectorIterator<T> iterator;
};

这是insert函数的返回类型。 iterator规范中对const_iteratorstd::vector的任何引用都是您需要提供的typedef。