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