C++ 如何在C++;

C++ 如何在C++;,c++,list,stl,C++,List,Stl,这是一个面试问题:如何使用STL列表容器创建循环 我是个新手。我搜索了这个问题,没有找到任何答案。如果这是一个老问题,请给我的链接,并删除这篇文章 谢谢大家! 如何使用STL列表容器创建循环 你不能 std::list有开头和结尾。对数据结构的所有访问都经过仔细控制,因此符合标准的程序根本无法生成非终止列表 p.s.我假设面试官实际上是想说“std::list”而不是“STL list” 如何使用STL列表容器创建循环 你不能 std::list有开头和结尾。对数据结构的所有访问都经过仔细控制,

这是一个面试问题:如何使用STL列表容器创建循环

我是个新手。我搜索了这个问题,没有找到任何答案。如果这是一个老问题,请给我的链接,并删除这篇文章

谢谢大家!

如何使用STL列表容器创建循环

你不能

std::list
有开头和结尾。对数据结构的所有访问都经过仔细控制,因此符合标准的程序根本无法生成非终止列表

p.s.我假设面试官实际上是想说“
std::list
”而不是“STL list”

如何使用STL列表容器创建循环

你不能

std::list
有开头和结尾。对数据结构的所有访问都经过仔细控制,因此符合标准的程序根本无法生成非终止列表


p.s.我假设面试官实际上是想说“
std::list
”而不是“STL list”。

一个可能的答案是:当多个线程同时操作
list
结构时,可能会发生这种情况。假设两个线程想要将_向后推到一个已经形成的
列表中
。如果列表中已有
b
a
,则循环列表可能如下所示:

  .--------------------------.
 (                            )
  `-> a <-> SENTINEL <-> b <-'
但是,最终可能会形成一个循环:

   .------------.
a. `-.           )
  `-> c <-> d <-'
             <--> SENTINEL <-> b (<-> a)
——。
a、 `-.)

`->cd一个可能的答案是:当多个线程同时操作
列表
结构时,可能会发生这种情况。假设两个线程想要将_向后推
到一个已经形成的
列表中
。如果列表中已有
b
a
,则循环列表可能如下所示:

  .--------------------------.
 (                            )
  `-> a <-> SENTINEL <-> b <-'
但是,最终可能会形成一个循环:

   .------------.
a. `-.           )
  `-> c <-> d <-'
             <--> SENTINEL <-> b (<-> a)
——。
a、 `-.)

`->这是一个措辞拙劣的问题。你应该要求澄清。他们想知道如何迭代
std::list
?这不是我的面试问题。但我确信这不是一个遍历列表的问题。完整的问题实际上是让你做一个循环,然后检测它。也许把你想要的代码放在析构函数中,然后创建一个包含N个对象的列表?这个问题是关于检测链表中的循环的吗@这是原始问题的一部分。我想我更关心问题的第一部分。不管怎样,谢谢。这是一个措辞拙劣的问题。你应该要求澄清。他们想知道如何迭代
std::list
?这不是我的面试问题。但我确信这不是一个遍历列表的问题。完整的问题实际上是让你做一个循环,然后检测它。也许把你想要的代码放在析构函数中,然后创建一个包含N个对象的列表?这个问题是关于检测链表中的循环的吗@这是原始问题的一部分。我想我更关心问题的第一部分。无论如何,谢谢。你能详细说明一下吗?我想我不明白你的图表。@KevinHu:我更改了示例,并提供了更详细的解释。你能详细解释一下吗?我想我不明白你的图表。@KevinHu:我更改了示例,并提供了更详细的解释。