-1

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

如果我打电话myQVector[121]但其中QVector没有项目,它会在其中创建 121 空间QVector还是仅在其中创建名为 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";
4

2 回答 2

0

QVector文档中:

QVector myQVector;

默认构造函数构造一个QVector.

myQVector[121] = ....

operator[](int(i)有条件

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

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

您可能想看看QMap,std::mapstd::unordered_map.

于 2014-02-14T01:48:23.243 回答
0

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

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

myMap[songId] = "song number 1 on cd 1";
于 2014-02-14T01:52:59.997 回答