我学会了一个程序,根据用户输入创建数组数。但是现在我想要为矩阵(2D)创建数组来保存矩阵的元素。为循环迭代器命名的矩阵创建动态数组
用户应该输入他想要的矩阵数量和每个矩阵的大小并输入相应的数字。
这是我研究的正常代码。我希望它可以用于矩阵。
#include <iostream>
int main()
{
unsigned int n;
std::cout << "Enter number of arrays: ";
std::cin >> n;
double** array = new double*[n];
unsigned int* sizeOfInnerArrays = new unsigned int[n];
for (int i = 0; i < n; ++i)
{
std::cout << "Enter size of array " << i << ": ";
std::cin >> sizeOfInnerArrays[i];
array[i] = new double[sizeOfInnerArrays[i]];
for (int j = 0; j < sizeOfInnerArrays[i]; ++j)
{
int element;
std::cout << "Enter element " << j << " of array " << i << ": ";
std::cin >> element;
array[i][j] = element;
}
}
//prints out each array as curly-brace enclosed sets of doubles
for (int i = 0; i < n; ++i)
{
std::cout << "{";
for (int j = 0; j < sizeOfInnerArrays[i] - 1; ++j)
{
std::cout << array[i][j] << ", ";
}
std::cout << array[i][sizeOfInnerArrays[i] - 1] << "}" << std::endl;
}
// free dynamically allocated memory
for (int i = 0; i < n; ++i)
{
delete [] array[i];
}
delete[] array;
delete[] sizeOfInnerArrays;
return 0;
}
使用'的std ::向量<性病::向量<性病::矢量 >>'会减少这短短的参考代码行将更安全。请注意,使用'new []'的代码的主要缺陷是,如果'new []'在所有创建逻辑中间引发异常,那么如何通过调用'delete []'来“回滚”? –
PaulMcKenzie