我有一个具有以下类型的列表容器列表:
QList< QList<UAVObject *> > objects;
出于某种原因,我想快速访问内部列表之一。我可以存储指向内部列表的指针吗?例如:
QList<UAVObject *>& ref = objects[0];
QList<UAVObject *>* pt = &ref;
在不同的函数调用和原始的pt
操作之间,objects
的值仍然有效吗?假设objects
列表只会添加到列表中,而不会删除。
答案 0 :(得分:2)
QList
不是基于STL容器,与std::list
无关。
为STL容器指定的失效规则不适用。
根据Qt documentation(和我的理解),它使用指向项目的指针数组,除非项目不大于void*
且声明为 movable (带有Q_MOVABLE_TYPE)。
在这种情况下,该项目直接存储在数组中,并且当列表增长时,引用将变得无效(指针数组将被重新分配)。