将2D数组传递给大小可变的函数

问题描述 投票:0回答:1

我正在尝试解决一个需要使用2D数组的问题,该数组的大小是从txt文件读取的。为了创建2D数组,“ V”需要const int,随后的V需要传入print函数,这意味着它在我的实现中也必须是全局的。有什么可能的解决方案?

void printAdjMatrix(int arr[][V])
{
    for (int i = 0; i < V; i++)
    {
        for (int j = 0; j < V; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    fstream in("in.txt", ios::in);
    int vort;
    in >> vort;
    const int V = vort;
    int adjMatrix[V][V]; //error: expression must have a constant value
    printAdjMatrix(adjMatrix);
}
c++ multidimensional-array
1个回答
0
投票

这对您有用吗?

void printAdjMatrix(int* square_mat, int dim)
{
    for (int i = 0; i < dim; i++)
    {
        for (int j = 0; j < dim; j++)
        {
            printf("%d ", square_mat[i*dim + j]);
        }
        printf("\n");
    }
}

int main()
{
    fstream in("in.txt", ios::in);
    int vort;
    in >> vort;
    const int V = vort;
    int* adjMatrix = new int[V*V](); //Use std::unique_ptr if possible
    printAdjMatrix(adjMatrix, V);
    delete[] adjMatrix;
}
© www.soinside.com 2019 - 2024. All rights reserved.