gpt4 book ai didi

c++ - 均衡对象时复制数组

转载 作者:行者123 更新时间:2023-11-30 03:12:39 25 4
gpt4 key购买 nike

大家好。我需要一些关于如何使用对象处理动态数组的经验。

我有一个类“SA”,由几个对象“Obj1”、“Obj2”等组成...

在类中,我有一个动态数组“SA_Array”,我按以下方式对其进行初始化,其中大小设置其长度:

double * SA_Array;
SA_Array = new double [size];

现在,我一直在尝试对上述对象使用“=”运算符,以便在每个对象中复制数组。不幸的是,我已经意识到它只会使指针相等,因此如果我修改一个对象中的数组,所有对象 SA_Array 都会被相同地修改......基本上只剩下数组上的一个拷贝。

例如Obj1.SA_Array == Obj2.SA_Array...

关于如何克服这个问题并实现 SA_Array 的对象特定拷贝,有什么好的建议吗?

最佳答案

如果大小是在运行时确定的,最容易使用的是 vector

vector<double> SA_Array(size);

现在您可以复制、交换和调整它的大小,它会相应地执行操作。如果您需要一个指向开始的指针,您可以使用 &SA_Array[0] 来实现。如果大小在编译时确定并固定,则可以使用 boost::array

boost::array<double, size> SA_Array;

您可以像使用数组一样使用它,但也可以复制它并像使用 vector 一样执行 SA_Array.begin() 之类的操作。如果您需要一个指向开始的指针,您可以使用 SA_Array.data()&SA_Array[0] 来实现。

有一种方法也像你一样使用原始指针,然后手动复制它

double *SA_Array;
SA_Array = new double[size];

double *SA_Copy;
SA_Copy = new double[size];
std::copy(SA_Array, SA_Array + size, SA_Copy);

但这很麻烦,因为您需要记住 delete[] 它们,vector 将为您完成所有工作。

关于c++ - 均衡对象时复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com