1

大家好,早上好,我有两个关于 QVector 及其用法的问题。我有一个自己的自定义类。有必要使用QVector<QSharedPointer<Class*>>或者直接将实例添加到QVectorlike就足够了QVector<Class*>>。我读到QVector已经在内部使用了一个共享指针,与 std 向量相反。直接附加实例指针是不好的做法吗?

接下来,我想要一个QVector带有选定元素的子集。使用 QVector> 来做这件事的好习惯是什么?

 __________
|QVector   |
|   _______|
|  |QVector|
|__|_______|
4

1 回答 1

1

QVector使用直接添加实例可能不是直觉。更好的解决方案是使用QList容器。

它不直接存储对象,而是存储指向它们的指针。您可以获得在两端快速插入的所有好处,并且重新分配涉及改组指针而不是复制构造函数,但会失去实际 or 的空间局部性,并获得大量堆分配。

QList<QList<Class>> testlist,并且不要忘记覆盖operator =

于 2021-10-25T07:34:07.703 回答