C++ 你能做一个模板的迭代器 class 吗?

C++ Can you make an iterator of a template class?

我正在做一个 class 项目,为此我们必须制作一个模板 class,该模板从 vector 派生,然后能够在其中添加和删除元素。

我想我会制作 class 的迭代器,因为它是一个向量 我想我应该能够使用 "this" 并创建迭代器,但 "this" 是一个指针,所以没有用。

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

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

如果您想使用 std::vector 中的 iterator,您必须使用 using 指令将其导入您的 class' 范围。

#include <vector>

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

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