在C中复制二维数组的最快方法?

时间:2020-08-26 15:26:54

标签: c multidimensional-array

我必须编写一个程序,该程序可以从2d数组中插入/删除字符串,并且能够尽快执行撤消/重做指令。我当时在考虑为每个插入/删除指令创建一个2d数组,因此撤消基本上将旧的2d数组复制回当前数组。


例如,我当前的2d数组是:
“ 1:你好
2:世界”

然后我要求删除#2行, 所以现在我当前的2d数组是:“ 1:你好”
我想创建一个新的2d数组,其中包含:
“ 1:你好
2:世界”
这样一来,如果我要求撤消操作,它会将“ 1:Hello 2:World”复制回当前的二维数组中。

struct node{char** Instruction2dArray;
        struct node* next;}
struct node* pointer;

i=0;
pointer->Instruction2dArray=malloc(max*sizeof(char*))  //max contains the number of written lines
while(CurrentArray[i][0]!='\0'){
        pointer->Instruction2dArray[i]=malloc((strlen(CurrentArray[i])+1)*sizeof(char));
        strcpy(pointer->Instruction2dArray[i],CurrentArray[i]);
        i++;
}

我写了这个简单的代码来复制当前数组,但是我很确定这是最慢的方法,而且我不知道如何更快地做。 谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

因为,您已经说过想要更多的插入/删除操作,所以链接列表更为可取。如果且仅当您需要更多随机访问时,则更喜欢2D字符串数组。

我认为,链接列表针对插入/删除操作进行了更优化。