繁体   English   中英

C++ 中的动态多维数组

[英]Dynamic Multidimensional Array in C++

该程序应该采用一个维度 n 并制作一个 nxn 维度的多维数组,我知道它必须使用new[ ]运算符来完成,因此它应该使用指针来完成,我在互联网上找到了很多方法,但我我是这个话题的新手,不能很好地理解它们是如何工作的,这是我发现声称可以工作的代码之一:

main()
{
    double n;
    cout<<"Enter the n dimension to the matrix[nxn]: ";
    cin>>n;
    matrix=new int*[n];
    int *data=new int[n*n];
    for(i=0;i<n;i++)
      matrix[i]=&data[i*n];
}

我的问题是:这段代码对吗? 如果是这样,它是如何工作的? 否则,哪些代码有效? (如果你能和一点解释,我会很感激)

您不应该使用原始指针,最好使用std::vector

#include <iostream>
#include <vector>

int main() {
    int n;
    std::cin << n;

    std::vector<std::vector<int>> matrix(n, std::vector<int>(n));
    // Do whatever with matrix

    return 0;
}

动态分配的正确方法是这样的(如果只涉及数组):

matrix = new int*[n];        //create an array of 'n' pointers
for(int i = 0;i < n;i++)
    matrix[i] = new int[n];  //allocate memory equivalent of 'n' ints to each of the 'n' pointers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM