C++ 关于C+中的列表+; list::迭代器; for(it=l.begin();it!=l.end();it++) 好吧,不知怎的,你自己已经回答了

C++ 关于C+中的列表+; list::迭代器; for(it=l.begin();it!=l.end();it++) 好吧,不知怎的,你自己已经回答了,c++,list,stl,iterator,C++,List,Stl,Iterator,在列表中,您不能使用[]“跳转”到随机元素,您所能做的一切 是为了得到下一个(与您当前所在的位置相比) 从第一个元素开始,为每个元素做一些事情,直到最后没有问题。 为第一个元素做点什么,得到下一个,做点什么,得到下一个…好吧,不知怎么的,你自己已经回答了 在列表中,您不能使用[]“跳转”到随机元素,您所能做的一切 是为了得到下一个(与您当前所在的位置相比) 从第一个元素开始,为每个元素做一些事情,直到最后没有问题。 为第一个元素做点什么,获取下一个元素,做点什么,获取下一个元素…每个节点都包含下

在列表中,您不能使用[]“跳转”到随机元素,您所能做的一切
是为了得到下一个(与您当前所在的位置相比)

从第一个元素开始,为每个元素做一些事情,直到最后没有问题。

为第一个元素做点什么,得到下一个,做点什么,得到下一个…

好吧,不知怎么的,你自己已经回答了

在列表中,您不能使用[]“跳转”到随机元素,您所能做的一切
是为了得到下一个(与您当前所在的位置相比)

从第一个元素开始,为每个元素做一些事情,直到最后没有问题。

为第一个元素做点什么,获取下一个元素,做点什么,获取下一个元素…

每个节点都包含下一个节点的地址。通过迭代,您可以自动跳转到下一个节点。

每个节点都包含下一个节点的地址。通过迭代,你可以自动跳到下一个节点。C++中的

列表是链表。这意味着它们不像向量数组那样将数据存储在连续的内存块中;相反,它们由多个节点组成,每个节点都有到下一个和上一个节点的链接。列表本身仅保留指向第一个和最后一个节点的链接。这允许在中间插入元素,而不需要昂贵的重新分配和复制其他元素。


当你增加迭代器时,基本上只需跟随列表的下一个节点的链接。C++中的

列表是链表。这意味着它们不像向量数组那样将数据存储在连续的内存块中;相反,它们由多个节点组成,每个节点都有到下一个和上一个节点的链接。列表本身仅保留指向第一个和最后一个节点的链接。这允许在中间插入元素,而不需要昂贵的重新分配和复制其他元素。

当您递增迭代器时,您基本上只是跟随链接到列表的下一个节点。

语句

列表不允许随机访问

这并不意味着您不能访问列表中的任意(即所有)元素。它通常意味着您不能同时访问列表中的随机元素(“常量时间”或O(1)是您在此上下文中可能看到的另一种情况)。例如,访问第二个元素可能比访问第1002个元素快得多(或慢得多)

访问某个任意元素的唯一方法是从定义明确的位置开始(例如,
begin()
rbegin()
或您以前记忆的某个迭代器),然后一次后退或前进一步

与之相比,例如,
std::vector
,它允许您在“O(1)时间”内访问任意元素,就像访问C数组一样(也就是说,无论是哪个元素,访问该元素总是需要相同的时间)。

该语句

列表不允许随机访问

这并不意味着您不能访问列表中的任意(即所有)元素。它通常意味着您不能同时访问列表中的随机元素(“常量时间”或O(1)是您在此上下文中可能看到的另一种情况)。例如,访问第二个元素可能比访问第1002个元素快得多(或慢得多)

访问某个任意元素的唯一方法是从定义明确的位置开始(例如,
begin()
rbegin()
或您以前记忆的某个迭代器),然后一次后退或前进一步


与之相比,例如,
std::vector
,它允许您访问任意元素,就像在“O(1)时间”中使用C数组一样(也就是说,访问元素总是需要相同的时间,无论它是哪个元素)。

因为迭代器不是指针——它看起来就像一个指针

当你说
++it
时,那只是
it.operator++()
的简写。在这个方法中,你可以做任何你想做的事情。您不需要仅向指针添加一个指针


对于列表::迭代器,它采用列表中下一个节点的地址。

因为迭代器不是指针——它看起来就像一个指针

当你说
++it
时,那只是
it.operator++()
的简写。在这个方法中,你可以做任何你想做的事情。您不需要仅向指针添加一个指针


对于列表::迭代器,它接受列表中下一个节点的地址。

迭代器提取某些细节,其中之一是如何从一个元素转到下一个元素。在本例中,它将检查节点的下一个指针并转到那里。每个指针的描述和功能可能会有所帮助?迭代器提取某些细节,其中之一是如何从一个元素转到下一个元素。在本例中,它将检查节点的下一个指针并转到那里。可能每个节点的描述和功能都会有所帮助?为什么它在这里说它允许恒定时间?我错了吗?谢谢@KevinCheng说,列表是
允许在特定元素(甚至整个范围)之前或之后进行固定时间的插入和擦除操作,但不允许直接随机访问。
。我没有发现任何地方(错误地)声称列表允许随机访问。为什么这里说它允许恒定时间?我错了吗?谢谢@KevinCheng说,列表是
允许在特定元素(甚至整个范围)之前或之后进行固定时间的插入和擦除操作,但不允许直接随机访问。
。我没有发现任何地方(错误地)声称列表允许随机访问。
list<int>::iterator it;
  for ( it = l.begin(); it != l.end(); it++ )
    cout << *it << " ";
  cout << endl;