问题标签 [qvector]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
12892 浏览

c++ - 重新审视 QList 与 QVector

我的问题基本上是何时选择QVector以及何时选择QList作为 Qt 容器。我已经知道的:

  1. Qt 文档:QList 类

对于大多数用途,QList 是正确使用的类。它的基于索引的 API 比 QLinkedList 的基于迭代器的 API 更方便,而且它通常比 QVector 更快,因为它将项目存储在内存中的方式。它还扩展到您的可执行文件中的更少代码。

  1. 同样写的是这个非常流行的问答:QVector vs QList。它也有利于 QList。

  2. 但是:在最近的 2015 年 Qt 世界峰会上,KDAB 提出了“为什么 QList 有害”,这基本上是在这里:

QList 被认为是有害的

不要使用 QList,使用 Q_DECLARE_TYPEINFO

据我了解,这个想法是QList几乎所有类型在堆中分配新元素时都是低效的。每次添加新元素时,它都会调用new(每个元素一次),与QVector.

这就是为什么现在我想了解:QVector我们应该选择它作为默认容器吗?

0 投票
2 回答
1045 浏览

qt - 将 QMap 的一部分作为 QVector

QMap<double, double> a我在-element中有一些元素。现在我想得到一些值的向量a。最简单的方法是(对我来说):

和作为要复制的元素的停止和开始位置x1x0但是有没有更快的方法而不是使用这个 for 循环?

编辑:“更快”是指更快的输入和(不可能,如所指出的)更快的执行。正如已经指出的那样,values(i)它没有按预期工作,因此我将把它作为伪代码留在这里,直到找到更好的替代品。

0 投票
1 回答
63 浏览

qt - 无法访问复杂的 qvector 的方法

我有一个看起来像这样的数据结构:

当我写wow->at(0).keys(); 它工作正常,但当我写wow[0].keys();我收到一个错误说如下:

'class QVector, QVector >>' 没有名为 'keys' 的成员 wow[0].keys(); ^

我将需要使用不仅需要只读访问权限的方法,而且我不明白为什么会发生这种情况。您能帮帮我吗?我应该如何以非只读方式访问 Qhashe 的方法?

0 投票
1 回答
313 浏览

qt - QtConcurrent map() 就地数组

我有一大堆浮点数。我想调用QtConcurrent::map()它并更改适当的值。

我可以在不复制数组的情况下做到这一点吗?它似乎map()需要一个QVectoras 参数,我找不到QVector从数组初始化 a 而不制作副本的方法。

0 投票
1 回答
955 浏览

c++ - 如何在 Qt 中声明和使用二维整数数组(GUI)?

我想在我的 QT GUI APPLICATION 的头文件中创建一个 2D 整数数组,其中包含 2 列和尚未定义(因此是动态的)行数。

到目前为止,我得到了这个:制作一个动态数组

我可以将它用作二维数组吗?而且,我以后如何调用某一列中的某一行?例如ArrayName[40][2]

0 投票
2 回答
983 浏览

c++ - 如何实例化并附加到指向我的对象的指针的 QVector

我需要实例化并附加到指向我的对象的指针的 QVector

我的标题说 QVector<Stuff*> myResults;

通过注释掉一些东西,我把它缩小到我对 QVector 的使用

1)当我尝试

2)当我尝试

我明白了

First-chance exception at 0x00007FF652523520 in LibTestd.exe: 0xC0000005: Access violation reading location 0x0000000000000030.

我复制并粘贴了不同的方法来实例化我的 qvector 无济于事。包括来自 doc.qt.io 的示例,其中 0 和 50 QVector<Stuff> vector(0);

我已经尝试使 QVector 中的类类型不是指针和取消引用的东西。

我真的不知道出了什么问题,但我相当肯定这与我滥用指针有关。有人可以给任何...指针吗?:P

顺便说一句,如果它是相关的,东西翻译单元(我的意思是,同名的 Stuff.h 和 Stuff.cpp 文件(是翻译单元的名称吗?))有两个类,Crap 类和 Stuff 类, 东西不能没有废话。我的构造函数中有这样的初始化列表。

顺便说一句,我实例化这样的东西Stuff * stuff = new Stuff()

0 投票
1 回答
102 浏览

c++ - 从文件读取的数据比文件大小占用更多的内存

我通过以下方式将一些数据写入文件:

该文件最终等于 484MB。之后我循环阅读它:

当这个读取循环正在运行时,我看到在任务管理器中我的程序开始占用大约 1300MB 的内存,之后我收到“在文件 text\qharfbuzzng.cpp,第 626 行:内存不足”错误。我的问题是:程序开始占用 2 倍以上的文件内存是否正常,我应该分块读取它还是我做错了什么?

0 投票
1 回答
132 浏览

c++ - 类范围内的二维向量

我想要一个包含字符串的二维向量,所以我尝试了类似的方法:

这是我在这里找到的初始化

我还读到它不可能在类范围内没有初始化向量,应该在构造函数中完成,我理解但是我无法在类范围内定义 var 的原型。

我也试过

所以我的问题是:如何在类范围内定义向量,然后在构造函数中对其进行初始化?

0 投票
1 回答
1110 浏览

c++ - C++中数组的QVector

我试图将多项式系数保存在QVector. 我的多项式是 2 次的,所以它有三个数字。

当我定义QVector<double[3]> zeros_Real(n + 1)我得到一个错误(如下)。首先,我认为我可以使用QVector<QVector<double>>,但这将是速度和内存问题,所以我决定不这样做。

为什么我不能有一个QVector元素double[3]

错误:

0 投票
1 回答
68 浏览

c++ - 为什么 QVector 的迭代器使用前缀增加而后缀在内部减少?

我目前正在为内部数据结构实现迭代器,并查看了 QVector 如何实现其迭代器。我不明白为什么 QTypedArrayData::iterator 实现了它的 ++ 和 -- 运算符,例如:

我不明白的是两者之间的差异:为什么它使用后缀减量运算符?

感谢您的澄清!