【发布时间】:2013-04-20 12:01:57
【问题描述】:
我想使用list 来保存一系列对象,这些对象包含有关我将执行的任务的信息。一旦这些对象之一完成,我就不再需要它;我只需要转到列表中的下一个对象。这基本上是一个队列。
关于指向这些对象的指针:
一旦我得到一个指向要操作的列表对象的指针,如果我删除列表中的其他元素,这个指针仍然有效,对吗?因为一旦我完成了我的第一个对象,我将移动到下一个对象,我将 pop 第一个对象,同时我继续处理下一个对象,它现在成为第一个对象。本质上,我将始终处理列表中的第一个对象。我想确保即使我删除了其他列表项,指向现有列表项的指针也不会失效。
(顺便说一句,这是我想使用list 的主要原因,因此我可以操作它而无需将所有其他列表对象潜在地移动到内存中的新空间,就像vector 的情况一样这会让这个变得昂贵)
关于记忆:
当我向列表中添加某些内容时,我是否可以期望列表获得所有权,并且如果我的原始项目超出范围而列表仍在成员变量范围内,我的对象仍将保留吗?然后,一旦弹出,item对象最终会超出范围吗?
【问题讨论】:
-
如果你要将它用作队列,那么为什么不使用
std::queue? -
@JoachimPileborg 我的读数表明
list是最好的,如果您在遍历它的同时对其进行操作。
标签: c++ list containers