0
你能告诉我哪个函数能更快地工作吗?或者他们都是错误的,你知道更好的方法来做到这一点。提前致谢。在这种情况下,哪种索引方式最合适?
double* solveDiagonal(double* A, double* B, int n)
{
double* X = new double[n];
for(int i = 0; i < n; i++)
X[i] = B[i]/A[i*n + i];
return X;
}
double* solveDiagonal(double* A, double* B, int n)
{
double* X = new double[n];
double** pA = new double*[n];
for(int i = 0; i < n; i++)
pA[i] = &A[i*n];
for(int i = 0; i < n; i++)
X[i] = B[i]/pA[i][i];
delete [] pA;
return X;
}
简介它。 (尽管如果后者更快,我会感到惊讶) – JasonD
编译器可能会计算出地址计算结果,使第一个更好,因为它更简单。 –
考虑返回一个'std :: vector'而不是用'new []'和'delete []'搞乱。 –
aschepler