第一次在这里发布内容。希望我做对了。 如果没有,请告诉我。
这是问题所在: 我正在尝试将元素插入给定数组。
我添加了一个for循环,用于检查numOfElem是否等于零,然后a [0]等于elem,但这也无济于事。
let myArray = eval(my_safe_string );
测试用例:
初始数组:数组中没有元素。
在索引0处插入10 ...
修改后的数组:数组中没有元素。
初始数组:1
在索引0处插入20 ...
修改后的数组:20
/ 正如您在此处看到的那样,它在正确的索引上添加了20,但删除了1,而不是将其向右移动。 /
初始数组:3 在索引1处插入30 ... 修改后的数组:3 / 它对此测试用例没有任何作用。每当必须添加的元素在末尾时,它都不会添加它,它会返回没有变化的初始数组。 /
总而言之,只要我要插入的元素的索引位于修改后的数组的末尾或该数组为空,就不会对该数组进行任何更改。
任何提示/建议帮助。预先谢谢你。
答案 0 :(得分:0)
给定示例存在多个问题。
最后一个要点是导致您的程序无法运行的原因。数组索引以0开头。因此,如果您的数组包含3个元素,则有效索引为0,1,2。而且在没有情况下也不会3。
因此,如果您的index
等于numOfElem
,您将使用a[i] = a[i-1];
写入越界内存区域。这是一个主要的错误,并可能导致死亡。
然后,按值传递参数numOfElem
。这意味着,编译器将为此变量创建一个副本,并在函数中使用该副本。 numOfElem++;
将在本地副本上工作,并且不会增加变量。一个好的编译器会警告您。此语句是“无操作”。请始终编译所有警告启用的内容。
我希望但不能看到它,您不希望数组通过增加变量来动态增长。
许多STL容器具有insert
函数可以完成这项工作。