c++中迭代器是如何处理List的

How do Iterators work on a List in C++?

本文关键字:处理 List 何处理 迭代器 c++      更新时间:2023-10-16

这是我对c++中迭代器如何在列表上工作的困惑。如果我说错了,请纠正我。

一个列表(在c++中)在底层是一个双链表。我们知道双链表的结构——一个数据区和一个指向下一个节点和上一个节点的指针。所以双链表中的每个节点在内存中都有一个地址。当在list上声明迭代器时,它指向这个地址。那么,当我们引用迭代器时,我们是如何只得到数据值的呢?

迭代器的解引用操作符被简单地定义为返回(对)节点中包含的值。例如,它可以这样定义:

template<T>
T& list<T>::iterator::operator *() {
  return this->node_pointer->value;
}

因为迭代器重载了操作符*,所以它返回对的引用,而不是对节点的引用。