如何在qt容器中存储qt容器

How to store qt containers inside qt containers

我理解得对吗

QVector<QSharedPointer<QVariantHash>>

而且我只能坚持:

QVector<QVariantHash>

由于隐式共享?

老实说,使用 STL,我永远不会这样做并且会 std::vector<std::shared_ptr<std::unordered_map<...>>>

更新:

我的问题是关于性能的。我知道这是存储对象的不同方式。

不,它们有不同的行为。

QVector<QVariantHash> 仍然是 copy-on-write,因此向量的副本仅共享直到第一次修改的元素,而只要您不理会指针,QVariantHashs pointed-to QVector<QSharedPointer<QVariantHash>> 的元素仍然是相同的对象。

顺便说一句,我会避免依赖隐式共享,因为它真的很容易陷入未定义的行为,指针或引用从你下面失效。

我还要提醒不要过度使用共享指针。几乎总是你可以拥有一件具有独特所有权的东西,它会分发参考资料。