我想将二维数组插入另一个二维数组 - 两者都是整数。第一个小于第二个,然后没有大小错误。较大的数据例如在它自己的中间,第二部分没有数据。我想在这些数据的中间插入第二个数组,这样我就需要在更大的数据中下推数据,这意味着在零数据上复制非零部分 。 如果有人能够以最有效的方式提供相关代码,将不胜感激。 例如:
int A[4][2] = {{1, 2} , {3, 4} , { 0, 0} , {0, 0} };
int B[2][2] = {{5, 6} , {7, 8}};
我想将B插入A(第一行和第二行之间)并将第二行向下推入第三行。 然后我们有:
int A[4][2] = {{1, 2} ,{5, 6} , {7, 8} , {3, 4} };
我想在不使用嵌套循环的情况下这样做。
答案 0 :(得分:2)
C ++中的数组是固定大小的 - 因此无法将数据“下推”到数组中,从而改变其大小。你只能复制东西,覆盖(部分)目标数组,但保留相同的大小。
如果你想这样做,你需要使用允许改变大小的东西(比如std::vector
),或者创建一个所需大小的新数组并将数据复制到其中:
int C[6][2];
std::copy(A, A+2, C);
std::copy(B, B+2, C+2);
std::copy(A+2, A+4, C+4);