在过去,我使用节点实现了一个链表。
我正在查看标准库列表的一些属性,它具有迭代器和适当的成员函数。
列表中的迭代器到底是什么?它们是节点指针吗?
对于向量,基本上你有指向元素类型的指针,并且数据结构建立在该给定类型的底层动态数组上。
对于列表,它似乎只是一个节点序列,节点数组。那么迭代器是节点指针而不是指向节点数据类型的指针吗?
基本上我要问的是对于一个向量我是否有这个迭代器:
tyepdef T* iterator;
列表的迭代器是
typedef node* iterator;
其中节点类似于:
template <class T> struct node {
node() { next = 0; }
node(T i, node* n = 0) : data(i), next(n) {}
node* next;
T data;
}
如果是这种情况,似乎取消引用等操作将不得不重载。