【发布时间】:2013-07-05 17:29:50
【问题描述】:
我正在使用foreach 循环遍历QLinkedList,但如果项目符合特定条件,我需要删除它们。在不搞乱循环的情况下,正确的方法是什么?
foreach( Object obj, myLinkedList )
{
if( obj.val == BAD_VAL )
// remove the item from myLinkedList
}
我找到了other questions这样的地址,但不适用于链表等一般情况。
如果可能的话,我还想了解其他数据结构(如QSet、QHash 等)。谢谢
【问题讨论】:
-
@hyde 我在我的问题中链接到那个问题,指出它没有解决我所问的全部问题。
QList和QLinkedList之间存在差异。它们相似,但不相同。 -
嗯,据我所知,它确实回答了这个问题。当您使用其
foreach时,Qt 会获取容器的浅拷贝。如果修改原始容器结构,Qt 需要对整个容器进行新的深拷贝(copy on write 语义)。简而言之,不要为此使用foreach。每个 Qt 容器的语义都是相同的。
标签: c++ qt foreach qt4 iterator