【发布时间】:2020-08-14 07:44:21
【问题描述】:
我有两个每个大小为 3 的数组:
void main() {
double* arr1 = new double[3];
double* arr2 = new double[3];
for(int i = 0; i < 3; i++) {
arr1[i] = 0;
arr2[i] = 0;
}
}
我有一个函数,它以双精度数组为指针:
void func(double* arr_6D) {
// expected arr size = 6.
// manipulates values of arr
for(int i = 0; i < 6; i++) {
arr_6D[i] = 1;
}
}
我想将 arr1 和 arr2 一起传递给函数,以便函数操纵它们的 原始 值。
我该怎么做?
下面不起作用,因为它正在复制原始数组:
double *arr_merged = new double[6];
arr_merged[0] = arr1[0];
arr_merged[1] = arr1[1];
arr_merged[2] = arr1[2];
arr_merged[3] = arr2[0];
arr_merged[4] = arr2[1];
arr_merged[5] = arr2[2];
func(arr_merged);
【问题讨论】:
-
为什么不使用
std::vector<double>来更改大小,例如添加新值并进行合并? -
通过引用传递数组并通过引用将它们分配给新数组
-
你做不到。如果您可以更改
func签名以接受您的自定义类型,则可以编写带有重载operator[]的struct { double* first, double* second };以在不复制的情况下访问两个数组的元素。 -
@bruno 我没有写一些细节,但 'func(double * arr_6D) 来自库并已修复。我无法将其更改为例如 func(std::vector
&arr_6d) -
@d4rk4ng31 你能举个例子吗?