C ++你能创建一个模板类的迭代器吗?

时间:2017-05-21 03:31:53

标签: c++ templates vector iterator template-classes

我正在研究一个类项目,为此我们必须创建一个派生自vector的模板类,然后才能添加和删除它中的元素。

我以为我会制作和类的迭代器,因为它是一个向量,我认为我应该能够使用"这个"然后创建迭代器,但是这个"是一个指针,所以没有工作。

如果我试试这个:vector<T>::iterator p;我会收到很多错误,所以我甚至可以这样做,或者我只是需要找到不同的解决方案?

1 个答案:

答案 0 :(得分:0)

首先,您不应该继承std::vector,因为它没有虚拟析构函数。有关详细信息,请参阅Thou shalt not inherit from std::vector

如果您想使用iterator中的std::vector,则必须使用using指令将其导入到您的班级范围内。

#include <vector>

template < typename T >
class MyVector : std::vector<T>
{
public:
  using typename std::vector<T>::iterator;
};

int main()
{
  MyVector<double>::iterator p;
}