c++ - 在 C++ 中填充动态分配的数组

标签 c++ multidimensional-array dynamic-memory-allocation

我正在尝试使用动态内存分配来填充多维数组,但遇到了如何确定每个数组大小的问题。

大小也在 for 循环中动态生成,不确定我如何将这些知识传输到循环结构中以告诉编译器何时停止。

请不要直接回答问题,只是需要一个方向,这样我才能弄清楚如何解决确定这个问题, 对于 (int v = 0; v < sizeof(a[y]); v++)

int** a = new int*[n];

    for (int i = 0; i < n; i++) {

        int colcount;

        cout << "Enter Size of Array for " << i << " : ";

        cin >> colcount;

        a[i] = new int[colcount];

    }

    // How to fill the matrix now

    for (int y = 0; y < n; y++) {

        for (int v = 0; v < sizeof(a[y]); v++) {

            cout << "Enter Array Content [" << y << "][" << v << "] :";

            cin >> a[y][v];

        }

    }

更新: 通过在内部引入 for 循环使其工作。

int** a = new int*[n];

for (int i = 0; i < n; i++) {

    int colcount;

    cout << "Enter Size of Array for " << i << " : ";

    cin >> colcount;

    a[i] = new int[colcount];

    for (int v = 0; v < colcount; v++) {

        cout << "Enter Array Content [" << i << "][" << v << "] :";

        cin >> a[i][v];

        }

    }

最后更新: 为了更好地跟踪模板类的内容和权限,我最终使用了 vector 并在社区的帮助下,这就是我的想法。

int n;

cout << "Enter Num of Vectors: ";

cin >> n;

vector<vector <int> > mult_arr(n);

for (int i = 0; i < n; i++) {

    int k;

    cout << "Enter size for vec " << i << ":";

    cin >> k;

    mult_arr[i].resize(k);

    for (int x = 0; x < k; x++) {

        cout << "Enter Array Contents [" << i << "][" << x << "] :";

        cin >> mult_arr[i][x];

    }

}

最佳答案

如果不实际将大小保存在变量中,您将无法知道或找到动态分配数组的大小。您不能使用经典的 sizeof(arr)/sizeof(type) 来查找大小,因为 sizeof() 指针只是其类型大小而不是总数组大小。使用 std::vector 或继续跟踪每个动态数组的大小。

关于c++ - 在 C++ 中填充动态分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540528/

相关文章:

c++ - 为运算符定义别名

c++ - 如何在 Python 中实现 C++ 类,由 C++ 调用?

c - 多维数组随机悬挂

c++ - 从动态分配的数组中删除

c++ - 忙等待自旋锁所花费的 CPU 周期

c++ - 在整数输入流中遇到的先前较小元素的计数?

javascript - 3D 数组 JavaScript

php - usort 对多个字段进行排序

c++ - 缓冲区的动态内存分配

c - 好友分配器、内存块和 FreeRTOS