想知道 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]
不满足条件。
您可能想看看QMap
、std::map
或std::unordered_map
。
【讨论】:
感谢您的回答。所以我想我要做一个 QVector 和另一个 QVector。我真的很感激帮助。很抱歉用无趣的问题打扰您。顺便说一句,我会投票赞成你的回答,但有人反对我的问题...... @Chax 很高兴它有帮助。看看我在答案末尾添加的地图类型。它们可能更适合您的需求。【参考方案2】:不,它不会自动增加 QVector 的大小(项目数)。相反,您的应用程序将崩溃,因为您尝试访问无效的索引。
但是列表/向量在这里似乎不是正确的数据结构。我相信,您真正想要的是 QMap,您可以在其中为键分配值:
myMap[songId] = "song number 1 on cd 1";
【讨论】:
以上是关于想知道 QVector 的大小的主要内容,如果未能解决你的问题,请参考以下文章