初始化并访问 <QVector< QVector<int> > QT5

Posted

技术标签:

【中文标题】初始化并访问 <QVector< QVector<int> > QT5【英文标题】:Initialize and access <QVector< QVector<int> > QT5 【发布时间】:2015-11-08 12:14:39 【问题描述】:

我已经声明了:

//myclass.h
QVector<int> aux;
QVector< QVector<int> > tests;

//myclass.cpp
aux = (QVector<int>(2));

它工作正常,但现在我想将每个 test QVector 维度初始化为 2 个长度:20 和 5。类似于:

tests = (QVector< QVector<int> >(20)(5));

但这不行。如何初始化它?

第二个问题是如何使用 [ ] 访问 tests 位置是不是和这个类似?:

tests[1][4]

谢谢。

【问题讨论】:

【参考方案1】:

你可以用一个大小和一个要复制的对象来初始化它:

//Your .h
QVector<int>          aux;
QVector<QVector<int>> tests;

//your .cpp
aux   = QVector<int>(2);
tests = QVector<QVector<int>>(20, aux);

请注意,在测试初始化​​中使用 aux 向量将不会引用(因此将来不会通过访问测试对其进行修改)或修改它。 这样测试内部将有 20 个大小为 2 的 QVector。

关于第二个问题,它应该与 tests[x][y] 一起使用,但如果不是,你可以使用 .at() 方法

tests.at(x).at(y);

【讨论】:

嗯,辅助和测试是自变量。我不想依赖第二个。我已经在我的 .h 文件中声明了QVector&lt; QVector&lt;int&gt; &gt; tests;,但我不能把初始化放在那里。我的 .cpp 文件中需要它。 @walolinux 只需使用另一个向量来初始化测试向量或使用辅助向量的副本 好的,但是如何在我的 .h 中声明它并在我的 .cpp 中设置大小? 我正在编辑答案

以上是关于初始化并访问 <QVector< QVector<int> > QT5的主要内容,如果未能解决你的问题,请参考以下文章

访问存储在 QVector 中的 QObject 的各个方面

QVector 与 'operator=' 不匹配

初始化 QImages 的 QVector

Qt - 如何将 QVector<QString> 保存并加载到多个标签中?

QT迭代器 QVector<int>::iterator it;

急急急急!!!求救!!!初始化tablewidget表格信息并生成垂直表头和水平表头