相关疑难解决方法(0)

在普通 for 循环中更改 QVector 的对象

如果我有一个 QVector,我可以使用基于范围的循环,使用引用并更改 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 …
Run Code Online (Sandbox Code Playgroud)

c++ qt containers qvector

2
推荐指数
1
解决办法
5330
查看次数

标签 统计

c++ ×1

containers ×1

qt ×1

qvector ×1