Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在这种情况下,哪种索引方式最合适?_C++_Pointers - Fatal编程技术网

C++ 在这种情况下,哪种索引方式最合适?

C++ 在这种情况下,哪种索引方式最合适?,c++,pointers,C++,Pointers,你能告诉我哪个功能运行得更快吗?或者他们都错了,你知道更好的方法。提前谢谢 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*

你能告诉我哪个功能运行得更快吗?或者他们都错了,你知道更好的方法。提前谢谢

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;
}
double*A(double*A,double*B,int n)
{
double*X=新的double[n];
对于(int i=0;i
虽然我猜第二个会因为更多的间接操作和分配而变得更慢,但您确实需要测试和分析来回答此类问题。

分析它。(虽然我会感到惊讶,如果后者更快)编译器可能会把地址计算出来,使第一个更好,因为它更简单。考虑返回<代码> STD::vector < /代码>,而不是乱搞< >代码>新[]/Cord>和<代码> Dele[]/Cord>。您是否面临着任何实现的速度问题?过早的优化是万恶之源。