【发布时间】:2013-11-09 22:14:10
【问题描述】:
过去我使用节点实现了一个链表。
我正在查看标准库列表的一些属性,它具有迭代器和适当的成员函数。
列表中的迭代器到底是什么?它们是节点指针吗?
对于向量,基本上你有指向元素类型的指针,并且数据结构建立在该给定类型的底层动态数组上。
对于列表,它似乎只是一个节点序列,节点数组。那么迭代器是节点指针而不是指向节点数据类型的指针吗?
基本上我要问的是对于向量我是否有这个迭代器:
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;
}
如果是这种情况,似乎取消引用等操作将不得不重载。
【问题讨论】:
-
欢迎来到 1995。迭代器可以根据节点指针来实现,而且确实经常如此。然而,它们是抽象数据类型,并且绝对是 not 裸
node指针。如果是这样,++之类的运算符将无法处理它们。
标签: c++