【发布时间】:2019-10-18 06:23:16
【问题描述】:
引用 Qt 文档,我知道:
QList 将在堆上分配其项目,除非 sizeof(T)
您能解释一下它是如何处理指针的吗? Qlist<SomeClass *>和Qvector<SomeClass *>有什么区别
【问题讨论】:
-
我建议 Marc Mutz 写一篇关于 Qt containers 的非常好的文章
引用 Qt 文档,我知道:
QList 将在堆上分配其项目,除非 sizeof(T)
您能解释一下它是如何处理指针的吗? Qlist<SomeClass *>和Qvector<SomeClass *>有什么区别
【问题讨论】:
QList 根本不处理指针。
对于QList,它只是另一种值类型。
由于原始指针的大小根据定义为== sizeof(void*),其内部内存布局将类似于QVector。
【讨论】:
QList 的前置具有恒定的时间复杂度。当我们按照您所说的那样定义QList<SomeClass *> 时,它的行为就像QVector。 QList prepend 操作在这种情况下是否仍然需要恒定的时间?