我试图用另一个向量替换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的第一行?
谢谢
答案 0 :(得分:1)
复制“没有循环”行的一种方法是std::copy
标准库算法。
std::copy(a, a + imax, x[0]); // x[0] is the first row
算法包含循环。根据具体实施情况,这可能只会调用memcpy
或memmove
。
答案 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'是您放置要替换的行的索引的变量)