结构值存储 我将C++中的程序转换成java,因为我对C++的经验少,而且有一些问题。 struct indx{ int i,j; }; void increment(indx place) { place.i+=5; place.j+=5; } 当C++通过方法和结构进行结构时,它们是否在代码的其余部分中保持?在Java术语中,修改方法中的结构是否与修改克隆相同?

结构值存储 我将C++中的程序转换成java,因为我对C++的经验少,而且有一些问题。 struct indx{ int i,j; }; void increment(indx place) { place.i+=5; place.j+=5; } 当C++通过方法和结构进行结构时,它们是否在代码的其余部分中保持?在Java术语中,修改方法中的结构是否与修改克隆相同?,java,c++,clone,Java,C++,Clone,您通过值传递place,这意味着increment操作的是结构的副本,而不是原始结构。更改为按引用传递,如下所示: void increment(indx& place) { ... } 然后,该函数将在原始结构上运行,任何修改都将保留给调用者。关于向量,即somevector.push_back(place)?@flyingeagle413相同的问题,相同的解决方案。此外,按值传递向量(或任何复杂的数据结构)通常是错误的选择,因为在复制过程中会产生性能损失。无论是否修改结构,通常都应

您通过值传递
place
,这意味着
increment
操作的是结构的副本,而不是原始结构。更改为按引用传递,如下所示:

void increment(indx& place) {
...
}

然后,该函数将在原始结构上运行,任何修改都将保留给调用者。

关于向量,即somevector.push_back(place)?@flyingeagle413相同的问题,相同的解决方案。此外,按值传递向量(或任何复杂的数据结构)通常是错误的选择,因为在复制过程中会产生性能损失。无论是否修改结构,通常都应该通过引用传递(如果没有,则将其标记为
const
,以防止意外修改)。