如果我有QVector,我可以使用基於範圍的循環,請使用引用並更改QVector中的對象。在普通for循環中更改QVector的對象
但在修改對象時我需要索引的情況下,我必須使用普通的for循環。但是,我怎樣才能改變QVector中對象的值?
解決方法在更改臨時對象之後,我使用了替換方法,但這很醜陋。
這是代碼:
struct Resource {
int value = 0;
};
int main(int argc, char *argv[])
{
QVector<Resource> vector{Resource{}, Resource{}, Resource{}};
qDebug() << vector.at(0).value
<< vector.at(1).value
<< vector.at(2).value;
for(Resource &res : vector)
res.value = 1;
qDebug() << vector.at(0).value
<< vector.at(1).value
<< vector.at(2).value;
for(int i = 0; i < vector.size(); ++i) {
//Resource &res = vector.at(i); <-- won't compile: cannot convert from 'const Resource' to 'Resource &'
Resource &res = vector.value(i); //Compiles, but creates temporary Object and doesn't change the original object
res.value = i;
//vector.replace(res); <-- Workaround
}
qDebug() << vector.at(0).value
<< vector.at(1).value
<< vector.at(2).value;
}