如何在循环中改变容器中的元素?

e-i*_*128 0 c++

有一个对象列表并按每个对象调用一个函数,但是canot保留了上下文,例如:

std::list<Ob> objs;
Ob ob;
ob.settings(/*...*/);
objs.push_back(ob);
/*...*/
for (Ob obj : objs)
{
    obj.increase();
}
Run Code Online (Sandbox Code Playgroud)

increase()函数总结一个局部变量,例如:

class Ob
{
    private:
        int a = 0;
Run Code Online (Sandbox Code Playgroud)

而......

Ob::increase(){ this->a++; }
Run Code Online (Sandbox Code Playgroud)

a只增加内循环,如果调用10次canot保持最后一个值.

如何保持对象的上下文?

Chr*_*ckl 6

for (Ob obj : objs)
Run Code Online (Sandbox Code Playgroud)

这会在每次循环迭代中创建一个副本,并在循环迭代完成时将其丢弃.

您想要使用引用:

for (Ob& obj : objs)
Run Code Online (Sandbox Code Playgroud)