【发布时间】:2018-07-07 04:18:12
【问题描述】:
所以我有一个自定义链表。每个节点都是一个结构体,它有一个指向下一个节点的 next 指针,并且 last->next 为空。
struct nodo {
T value;
nodo *next;
nodo() : next(0) {}
nodo(const T &v, nodo *n=0): value(v), next(n){}
};
我想在我的类中实现迭代器,因为我的类支持使用 operator[] 进行随机访问,所以我选择实现随机访问迭代器。 现在,我的问题在于以下运算符:
difference_type operator-(const iterator &other) {
}
它返回这个迭代器和其他迭代器之间的元素数量,但我不确定什么是最好的实现它。
【问题讨论】:
-
我认为这暗示您的迭代器并不是真正的随机访问
-
你为什么这么说?
-
随机访问的要点是位置类型
iterator,可以从任何位置使用到任何其他位置。如果真是这样,计算差异应该不会太难。您可以轻松实现前向迭代器。为什么还不够好? -
"随机访问的要点是位置类型,即迭代器,可以从任何位置使用到任何其他位置。"这正是我正在寻找的
-
你搞错了。您没有使用 operator[] 的随机访问权限,因此将实现随机访问迭代器 - 您需要实现随机访问迭代器,然后所有其余部分自然而然地消失。就像@StoryTeller 所说的那样,您展示的数据结构不可能实现随机访问迭代器。您声称已经实现了 operator[],如何实现?它是随机访问迭代器所要求的恒定时间吗?
标签: c++ linked-list iterator