【发布时间】:2014-03-19 07:46:14
【问题描述】:
我想像队列一样使用 QVector。那是因为我想访问指向向量中数据的原始指针,而 QVector 将数据连续放置。所以我在我的 QVector 中的一个线程中附加数据,并在另一个线程中从第一个读取计数元素并删除它们。
当您从 QVector 的中间移除时,数据会重新排列,并且会发生许多副本。我想知道从 QVector 的请求中删除计数元素时是否复制了数据,或者它的开销很小?有没有更好的方法来做到这一点?
【问题讨论】:
-
QVector不是为排队元素设计的,您应该将数据包装在QQueue -
但是我无法通过指针访问QQueue中的数据。
-
指针指向什么?
-
正如我在您的另一个问题中所说的那样 - 您应该阅读一些有关数据结构及其复杂性的内容。如果你需要通过索引快速访问 - 你应该使用 QVector,如果你需要快速插入/删除你应该使用 QLinkedList。但在大多数情况下,使用 QList 就足够了。你原来的问题是什么?您在哪里遇到性能问题?你如何分析它们?
-
(1) 为什么需要一个指向容器中原始数据的指针?您可以只堆分配您的数据,并将它们的指针存储在容器中。 (2) 几乎所有性能问题的答案都是“Profile it”