指向QList

时间:2019-03-08 22:38:04

标签: qt qt5

我有一个具有以下类型的列表容器列表:

QList< QList<UAVObject *> > objects;

出于某种原因,我想快速访问内部列表之一。我可以存储指向内部列表的指针吗?例如:

QList<UAVObject *>& ref = objects[0];
QList<UAVObject *>* pt = &ref;

在不同的函数调用和原始的pt操作之间,objects的值仍然有效吗?假设objects列表只会添加到列表中,而不会删除。

1 个答案:

答案 0 :(得分:2)

QList不是基于STL容器,与std::list无关。 为STL容器指定的失效规则不适用。

根据Qt documentation(和我的理解),它使用指向项目的指针数组,除非项目不大于void*且声明为 movable (带有Q_MOVABLE_TYPE)。

在这种情况下,该项目直接存储在数组中,并且当列表增长时,引用将变得无效(指针数组将被重新分配)。