如何在C++中使用 STL 列表创建循环
How to create a loop using STL list in C++
这是一个面试问题:如何使用 STL 列表容器创建循环?
我是新手。我搜索了这个问题,没有找到任何问题。如果这是一个老问题,请给我链接并删除这篇文章。
谢谢大家!
如何使用 STL 列表容器创建循环?
你不能。
std::list
有始有终。对数据结构的所有访问都受到严格控制,因此符合标准的程序根本无法生成非终止列表。
附言:我假设面试官实际上想说"std::list
"而不是"STL列表"。
一个可能的答案是:当多个线程同时操作list
结构时,可能会发生这种情况。假设两个线程想要push_back
到一个已经形成的list
中。如果列表已经有b
和a
,循环列表可能如下所示:
.--------------------------.
( )
`-> a <-> SENTINEL <-> b <-'
一个线程插入c
同时另一个线程插入d
.他们每个人都想像这样连接到SENTINEL
的背面:
a <-> c <-> SENTINEL
a <-> d <-> SENTINEL
但是,最终可能会形成一个循环:
.------------.
a. `-. )
`-> c <-> d <-'
<--> SENTINEL <-> b (<-> a)
转发链接很好:b -> a -> c -> d
但是反向链接将循环:d -> c -> d
...
发生这种情况是因为 SENTINEL 的指针正在被读取、取消引用和修改,而不会相互排斥。
相关文章:
- 如何检查C ++ STL列表是否为回文?
- 清除 C++ 中的指针的 STL 列表
- 在Visual Studio 2013中编译的STL列表代码在Visual Studio 2019中给出了错误.想知道原
- 使用.txt文件填充 STL 列表不起作用
- 为 STL 列表编写选择排序
- 如何从 STL 列表中删除结构记录
- C++如何将 STL 列表传递给函数
- 漂亮的打印不适用于C ++ STL列表
- 在C++中,是否可以引用像C++中的stl列表这样的数据结构部分
- 如何根据STL列表中的元素数量分配内存
- 我怎么知道,如果我在 STL 列表中找到了我搜索的号码
- 打印列表列表C++ STL 列表
- 我们可以在穿越时插入STL列表吗?
- 使用 c++ 的 STL 列表 ..在传递列表指针的数组中
- 使用 C++11 迭代语法时从 STL 列表中删除
- 如何使用静态 stl 列表的迭代器
- 如何更改 stl 列表中项的值
- STL列表,删除所有奇数
- 如何将函数中的stl列表传递为C 中的参数
- 如何将结构添加到STL列表中