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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT迭代器 QVector<int>::iterator it;相关的知识,希望对你有一定的参考价值。

QVector<int>::iterator it=m_VSAllSelNo.begin();

while(it!=m_VSAllSelNo.end())



m_thSubmit->m_VSAllSelNo.push_back(it);



m_thSubmit->start();


menu.cpp:236: 错误:从类型 ‘int**’ 到类型 ‘int’ 的转换无效
menu.cpp:236: 错误: 初始化实参 1,属于 ‘void QVector<T>::push_back(const T&) [with T = int]
求问如何改

参考技术A it前面加个*试试:

m_thSubmit->m_VSAllSelNo.push_back(*it);
参考技术B 应该是push_back(it.data())吧

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

【中文标题】初始化并访问 <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 中设置大小? 我正在编辑答案

以上是关于QT迭代器 QVector<int>::iterator it;的主要内容,如果未能解决你的问题,请参考以下文章

qt5中QVector<double> 如何赋值

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

多维数组的Qt QVector

qvector倒序插入

错误:“operator[]”不匹配(操作数类型为“QVector<int>”和“QCharRef”)

Qt6STL-QVector循环删除指针浅谈