【发布时间】:2020-06-28 05:12:44
【问题描述】:
你好,早上好,一起,
我有两个关于 QVector 及其用法的问题。我有一个自己的自定义类。有必要使用QVector<QSharedPointer<Class*>> 还是像QVector<Class*>> 一样直接将实例添加到QVector 就足够了。我读到QVector 已经在内部使用了一个共享指针,与 std 向量相反。直接附加实例指针是不好的做法吗?
接下来,我想要一个带有选定元素的QVector 子集。使用 QVector> 来做这件事的好习惯是什么?
__________
|QVector |
| _______|
| |QVector|
|__|_______|
【问题讨论】:
-
如果将指针放入向量中,则指向的对象不由 QVector(或任何其他 Qt 或 STL 容器)管理,您需要手动管理它们。所以如果你想要 shared_ptr 行为,你需要使用 QVector
>。假设您根本需要指针,并且 Class 不能用于每个值。 (第二部分我不完全理解,但你可能想要一个 QVector >>) -
谢谢你,弗兰克。我编辑了我的帖子。您认为将指针直接附加到 QVector 是不好的做法吗?并手动管理实例?
-
我认为如果你采取一些预防措施是可以的,比如将向量封装在一个类中,只有几个地方删除(并因此删除)项目,而不是传递向量的副本,其中那么这些物品的所有权可能就不清楚了。
标签: c++ qt vector qvector qsharedpointer