在c ++中初始化邻接矩阵

Eri*_*ber 0 c++ graph adjacency-matrix

我正在研究C++中的图形实现,并且遇到了一个对我来说很有意义的邻接矩阵的实现.该实现使用"init"函数初始化矩阵:

void init(int n) {

    numVertex = 0;
    numEdge = 0;

    mark = new int[n]; //initialize mark array
    for (int i = 0; i < numVertex; i++) {
        mark[i] = 0;
    }

    matrix = (int**) new int*[numVertex]; //make matrix
    for (int i = 0; i < numVertex; i++) {
        matrix[i] = new int[numVertex];
    }

    for (int i = 0; i < numVertex; i++) { //mark all matrix cells as false
        for (int j = 0; j < numVertex; j++) {
            matrix[i][j] = 0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我很困惑的是:

 matrix = (int**) new int*[numVertex]; //make matrix
Run Code Online (Sandbox Code Playgroud)

(int**)方面有什么作用?为什么我会选择使用它而不是matrix = new int**[numVertex];

非常感谢!

Ulr*_*rdt 6

(int**)value 是一种C风格的演员表演.

笔记:

  • 不要在C++中使用它们,它往往会导致或隐藏问题,例如赋值的右侧和左侧之间的不匹配.
  • 代码质量相对较低,适当的C++宁愿使用std::vector.
  • 代码也不完整,因此很少可以确定它是如何运作的.