所以我将指向 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 的行更快,方法是循环其元素。
答案 0 :(得分:0)
至于什么更快,我不能说......我建议你尝试设置每种方法的原型。至于重新链接x,您可以使用:
x = new int[n];
我希望这会有所帮助。
答案 1 :(得分:0)
如果我的理解是正确的,你想要将数组x的所有值的历史记录保存在y中。
如果没有在每次迭代中用x填充y行,你有什么建议是不可能的。
你可以做的是预分配,所以你没有在循环中有新的分配,你在循环之前有它(你仍然会复制你)。
内存成本仍然是n ^ 2,复杂性也是如此。
-----------------------------------------------------------------
Label Search -space- btn group
-----------------------------------------------------------------