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;
}
我正在做一个 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;
}