改变矢量中的东西

sud*_*udo 1 c++ vector

从矢量中取出某些东西并改变其值的最简单方法是什么?这不符合我的预期.

for(int i = 0; i < list.size(); i++) {
someType s = list.at(i);
s.x = 10;
s.y = 20;
s.z = 30;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我打印出someType s的x,y,z时,它并不能满足我的期望.对不起,我正在混淆Java和C++.

Jam*_*lis 9

someType s = list.at(i);
Run Code Online (Sandbox Code Playgroud)

您正在索引处复制元素i.在C++中,如果要引用某些内容,则需要明确声明需要引用:

someType& s = list.at(i);
     // ^ I'm a reference
Run Code Online (Sandbox Code Playgroud)

在现在编写时,您只能操作您创建的副本,而不是容器中的对象.