用另一个1d数组替换2D数组的整行

时间:2017-09-29 03:29:13

标签: c++ arrays loops multidimensional-array

我试图用另一个向量替换2d数组的整行。 我的代码目前如下:

#include <stdio.h>

int main(){
    int imax = 5;
    int jmax = 5;
    double x[imax][jmax] = {0.0};
    double a[imax] = {1,2,3,4,5};
}   

换句话说,现在我的x是一个5x5的矩阵。如何用我的向量添加/追加/重写X的第一行?

谢谢

2 个答案:

答案 0 :(得分:1)

复制“没有循环”行的一种方法是std::copy标准库算法。

std::copy(a, a + imax, x[0]); // x[0] is the first row

算法包含循环。根据具体实施情况,这可能只会调用memcpymemmove

答案 1 :(得分:0)

imax和jmax应该是const以使该代码合法。无论如何,一个明显的可能性是逐个复制元素:

for ( int j = 0; j < jmax; j++ ) {
    x[row][j] = a[j];
}

另一种方法是使用memcpy。在正常情况下,这应该更快,但是,您依赖于square bracket []运算符没有过载的假设。此外,您只能以这种方式覆盖一行,而不是一列,因此请谨慎使用它的时间和地点。

memcpy( x[row], a, sizeof(a) );

('row'是您放置要替换的行的索引的变量)