想知道 QVector 的大小

Posted

技术标签:

【中文标题】想知道 QVector 的大小【英文标题】:Wondering about QVector size 【发布时间】:2014-02-14 01:35:10 【问题描述】:

只是我遇到的一个随机问题。

如果我调用myQVector[121]QVector 中没有项目,它是在该QVector 中创建121 空间还是仅在其中创建名为121 的空间?

我想知道,因为我正在为我的 cd 创建一个库(需要一个项目来学习),并且我想让向量可以用于多 cd 专辑。

我的意思

QVector myQVector;

myQVector[121] = "song number 1 on cd 1";
myQVector[122] = "song number 2 on cd 1";
myQVector[211] = "song number 1 on cd 2";
myQVector[322] = "song number 22 on cd 3";

【问题讨论】:

文档是否已失效? qt-project.org/doc/qt-5.0/qtcore/qvector.html 你真以为我没看过?我没有找到答案,这就是为什么我要问...无论如何,谢谢。其他人得到了答案? 答案在我刚才链接的文档中。 在哪里???我现在正在看... 我是初学者,所以有些词没有意义。我发现了一些关于默认值的东西,但这不是我想要的。我应该查看常规的 C++ 库吗? Qvector和c++ vector真的有区别吗? 【参考方案1】:

来自QVector documentation:

QVector myQVector;

default constructor 构造了一个 QVector

myQVector[121] = ....

operator[](int(i) 有条件

i 必须是向量中的有效索引位置(即0 <= i < size())。

所以调用myQVector[121]不满足条件。

您可能想看看QMapstd::mapstd::unordered_map

【讨论】:

感谢您的回答。所以我想我要做一个 QVector 和另一个 QVector。我真的很感激帮助。很抱歉用无趣的问题打扰您。顺便说一句,我会投票赞成你的回答,但有人反对我的问题...... @Chax 很高兴它有帮助。看看我在答案末尾添加的地图类型。它们可能更适合您的需求。【参考方案2】:

不,它不会自动增加 QVector 的大小(项目数)。相反,您的应用程序将崩溃,因为您尝试访问无效的索引。

但是列表/向量在这里似乎不是正确的数据结构。我相信,您真正想要的是 QMap,您可以在其中为键分配值:

myMap[songId] = "song number 1 on cd 1";

【讨论】:

以上是关于想知道 QVector 的大小的主要内容,如果未能解决你的问题,请参考以下文章

返回 QVector 的最佳方式

QVector<int> 写入/调整大小性能

QVector 的范围

QVector size() 返回大小为零

从 QVector 中删除所有小于 0 的元素

QVector的内存分配策略