qvector相关内容

QVector 要求默认构造函数的原因是什么?

我可以看到这些类被视为调用默认构造函数所需的复杂对象: void QVector::defaultConstruct(T *from, T *to){if (QTypeInfo::isComplex) {而(从!=到){新的(来自++)T();}...} 但不清楚为什么需要在 QVector 的“隐藏"区域中构造对象.我的意思是这些对象根本无法访问,那么为什么不只是保留内存而不是真正的对象创建 ..
发布时间:2022-01-24 20:38:42 C/C++开发

为什么 QVector::size 返回 int?

std::vector::size() 返回一个 size_type,它是无符号的,通常与 size_t 相同,例如在 64 位平台上为 8 个字节. 相比之下,QVector::size() 返回一个 int,即使在 64 位平台上通常也是 4 个字节,并且它是有符号的,这意味着它可以只到 2^32 的一半. 这是为什么?这似乎很不合逻辑,而且在技术上也有限制,虽然您可能永远需要超过 ..
发布时间:2021-12-09 17:09:37 C/C++开发

在普通的for循环中更改QVector的对象

如果我有QVector,则可以使用基于范围的循环,使用引用并更改QVector中的对象。 但是在修改对象时需要索引的情况下,必须使用普通的for循环。但是,如何在QVector中更改对象的值呢? 作为解决方法,我在更改临时对象后使用了replace方法,但这有点丑陋。 这代码是: struct Resource { int value = 0; }; int ..
发布时间:2020-10-08 21:26:51 C/C++开发

将向量排序的条件多于一个

我在其他帖子中问过有关:但是现在我需要更复杂的条件来对向量进行排序. 我有一个像这样的向量: vector_points_original .然后,如果我对每个点的z进行排序,我就会有其他矢量,例如: vector_points_sorted_by_Z . 但是我需要 vector_sorted_by_z,然后按y分量对前四个点和后四个点进行排序.你能帮我吗? 解决方案 std::v ..
发布时间:2020-07-21 06:28:49 C/C++开发

从QList填充QVector

我有一个QList和QVector.我填充Qlist,然后尝试复制到QVector. Ovector具有 fromList()方法.但这不起作用. 我的代码: QList listA; QVector vectorA; //I also tried QVectorvectorA(100); for(int i=0; i ..
发布时间:2020-07-05 01:17:37 其他开发

重新访问QList与QVector

我的问题基本上是何时选择QVector和何时选择QList作为您的Qt容器.我已经知道的: Qt文档: QList类 在大多数情况下,QList是要使用的正确类.它的基于索引的API比QLinkedList的基于迭代器的API更方便,并且由于它在内存中存储项目的方式,它通常比QVector更快.它还会扩展为减少可执行文件中的代码. 这个非常受欢迎的问答集也写着: QVector ..
发布时间:2020-07-05 01:17:09 C/C++开发

为什么Qt的容器类不允许可移动的,不可复制的元素类型?

Qt容器类QList,QVector等要求其元素类型是可复制的.从C ++ 11开始,STL容器要求其元素类型是可复制的或仅可移动的.为什么Qt容器不支持仅移动元素类型? 解决方案 Qt错误#54685 已从Qt开发人员那里得到明确的确认,因为Qt容器的隐式共享原则 ,它不(并且永远不会)支持仅移动类型. 将一个Qt容器复制到另一个Qt容器时,并不是在进行深层复制-容器 ..
发布时间:2020-05-12 19:23:51 其他开发

QCache和QSharedPointer

问题是,我有 QVector 的 QSharedPointer ,我想把它们的一部分 QCache 。如何插入一个共享指针 QCache ?如果我将指针设置为我的缓存但是破坏了 QVector 和共享指针,会发生什么?将内存释放,我的缓存指向无处吗? 解决方案 这是一个错误,如果你只是一个指针指向你的项目 QChache ,同时这样的指针由 QSharedPointer 管理。 item对 ..
发布时间:2016-10-29 20:41:13 C/C++开发

为什么QVector :: size返回int?

std :: vector :: size()返回一个 size_type ,它是无符号的, code> size_t ,例如 在对比中, QVector :: size()返回一个 int 这通常是4个字节,即使在64位平台上,并且它是签名的,这意味着它只能到一半到2 ^ 32。 为什么?这似乎是不合逻辑的,也是技术上的限制,虽然你也许不需要超过2 ^ 32的数量的元素,使用sign ..
发布时间:2016-10-14 20:20:26 C/C++开发