【问题标题】:How Qlist handles pointersQlist 如何处理指针
【发布时间】:2019-10-18 06:23:16
【问题描述】:

引用 Qt 文档,我知道:

QList 将在堆上分配其项目,除非 sizeof(T)

您能解释一下它是如何处理指针的吗? Qlist<SomeClass *>Qvector<SomeClass *>有什么区别

【问题讨论】:

标签: qt qlist qvector


【解决方案1】:

QList 根本不处理指针。

对于QList,它只是另一种值类型。

由于原始指针的大小根据定义为== sizeof(void*),其内部内存布局将类似于QVector

【讨论】:

  • 谢谢,现在我还有一个问题。 Qt 表示 QList 的前置具有恒定的时间复杂度。当我们按照您所说的那样定义QList<SomeClass *> 时,它的行为就像QVectorQList prepend 操作在这种情况下是否仍然需要恒定的时间?
  • 查看文档的Algorythmic Complexity 部分。如果您可以避免前置并改为追加,请使用 QVector,最好使用 reserve()。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多