C++ 将数组大小分配为变量并在运行时为变量赋值?

标签 c++ arrays

我对 C++ 编程非常陌生,所以请原谅我的愚蠢问题。

我有一个如下所示的数组:

double myarray [15][20000]; // Works ok but stack overflow error if I change 15 to about 200

我想实现这样的目标:

double myarray [total][20000];

然后在运行时我希望用户输入总计的值:

cin>>total

请就如何实现这一目标以及解决此问题和避免堆栈溢出的最佳实践提出建议。

谢谢。

最佳答案

使用 vector vector :

int total;

cin >> total;

//                                      (1)                        (2)
std::vector<std::vector<double>> myVec(total, std::vector<double>(20000));
// (1) is the first dimension and (2) is the second dimension

您可以像数组一样使用它们,并且不会出现堆栈溢出:

myVec[0][4] = 53.24;
cout << myVec[0][4];

如果需要,您甚至可以即时将它们放大。

您会遇到堆栈溢出,因为堆栈通常非常小,并且您试图在其上分配太大的数组。 vector 在免费存储上使用动态分配的内存,该内存通常大得多并且不会给您带来溢出错误。

此外,在 C++ 中,静态数组的大小必须在编译时已知,这就是为什么您无法读取数字并使用它,而使用 vector 您可以在运行时调整它们的大小.

关于C++ 将数组大小分配为变量并在运行时为变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403059/

相关文章:

java - 程序布局 - 通过 System.in.read 创建适当大小的数组

python - Windows 上的 boost python 在导入 ("__main__"时崩溃);

c++ - 如何在 Clang 中获取 NamedDecl 的错位名称?

c++ - WinInet ftp 连接错误 123

c++:MSVC vs. GCC+CLANG:处理捕获类成员变量的 lambdas,正确的方法是什么?

python - 整行 Numpy 数组索引操作可以被 cythonized 吗?

c++ - list<string> 和 string 之间的构造函数不明确

python - 如何仅用另一个数组的值替换 numpy 数组的部分值?

javascript - 如何判断一个字符串是否是一个数组?

javascript - 如何在 Angular JS 中对对象数组内的货币值求和