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

标签 c++ arrays pointers object operators

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

我有一个类“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/

相关文章:

以 C++ 与 D 为例。 D主页的前端程序RPN计算器对比

c++ - 如何防止 Visual Studio 发出有关缺少调试信息的警告?

c - 通过函数传递动态数组结构

c - 在 C 中分配浮点指针

java - 重复间接的性能

c++ - HLSL 采样器状态

c - 如何结束遍历指针数组的 for 循环

无法理解这段代码的逻辑

python - 使用重复索引递增 Numpy 多维数组

c++ - CUDA 将继承的类对象复制到设备