用c ++

时间:2015-06-30 20:49:38

标签: c++ arrays multidimensional-array dynamic-allocation

所以我将指向 n 整数的指针 x 定义为:

int* x = new int [n];

x 的值在循环中发生变化。在循环结束时,我将指针 x 存储在已初始化为的二维指针 y 中:

int** y = new int* [n];

我使用以下赋值表达式将 x 的指针存储在 y ith 元素中:

y[i] = x;

由于 x 指向内存的相同部分,但存储在 x 中的值不断变化,因此2D数组中的所有元素 y 将获得在上次执行循环期间存储在 x 中的最后一个值。

我的问题

无论如何,我可以将 x 与其指向的位置取消链接,并在每次将其地址存储在 y 时指向内存的新部分?这样 y 将地址存储到存储器的不同部分,因此可以检索存储在 x 中的答案的历史。另请告诉我,如果这种方法(如果可能的话)比在每次迭代中用 x 填充 y 的行更快,方法是循环其元素。

2 个答案:

答案 0 :(得分:0)

至于什么更快,我不能说......我建议你尝试设置每种方法的原型。至于重新链接x,您可以使用:

x = new int[n];

我希望这会有所帮助。

答案 1 :(得分:0)

如果我的理解是正确的,你想要将数组x的所有值的历史记录保存在y中。

如果没有在每次迭代中用x填充y行,你有什么建议是不可能的。

你可以做的是预分配,所以你没有在循环中有新的分配,你在循环之前有它(你仍然会复制你)。

内存成本仍然是n ^ 2,复杂性也是如此。

-----------------------------------------------------------------
Label                                   Search -space- btn group
-----------------------------------------------------------------