c++ - 如何在c/c++中已知列的情况下一次按行动态分配二维数组

标签 c++ c arrays

我想分配一个二维数组(在 C 或 C++ 中),其中行未知但列已知。我不想首先分配我的行 n 大小,因为当我想要输入时,数组的第一行将使用已知的列大小进行分配->然后我接受我的输入->将其放入数组的第1行中。然后,如果我想要一个输入,数组的第二行将使用已知的列大小进行分配->然后我接受我的输入->把它放在我的数组的第 2 行。这个过程将运行未知的行数,我想保留所有输入以供进一步处理。当我按 Enter 按钮两次时,输入将停止,下一个过程将开始,这不是这里关心的问题。我应该做什么这或者这在 C 或 C++ 中是否可能?给我完整的功能代码将非常有帮助,因为我对指针或数组或与此问题的解决方案相关的其他事物知之甚少。

最佳答案

与使用realloc类似,您可以使用malloc一次分配一行。下面提供了一个具有 ARRAY_WIDTH 固定列的动态增长数组。每行的输入需要 ARRAY_WIDTH 值。示例:

#define ARRAY_WIDTH 10

/* psuedo code for array of ints with fixed columns = ARRAY_WIDTH */

int *array[ARRAY_WIDTH];
int idx = 0;
int j = 0;

/* get your input with getline in a while loop */
{
        array[idx] = malloc (sizeof (array));  /* allocate fixed width */

        /* assign values to array  0 <= values < ARRAY_WIDTH */
        for (j = 0, ptr = buffer; j < ARRAY_WIDTH; j++, ptr++)
            array [idx][j] = /* your data */;

        idx++;
}

int nrows = idx;

关于c++ - 如何在c/c++中已知列的情况下一次按行动态分配二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24547205/

相关文章:

javascript - 使用另一个对象数组过滤 Javascript 对象数组

c++ - 一次处理所有传递的重载

当文件存在时,Cmake 'check_include_files' 函数失败

c++ - 重载运算符的线程安全新

c - 如何确定数字是圆/整数还是浮点/ double

c - 我应该为多个连接使用单独的 ODBC 环境吗?

Javascript - 在对象数组中搜索和匹配数据的更好方法?

javascript - 为什么我应该在我自己的自定义 'i in array' 中使用 'array.indexOf' ?

c++ - 如何在 C++ 中定义自定义迭代器

c++ - 从IP地址查找MAC地址