我正在尝试使用动态内存分配来填充多维数组,但遇到了如何确定每个数组大小的问题。
大小也在 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/