gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:12 25 4
gpt4 key购买 nike

我真的是 C++ 编程的新手,所以请原谅我的愚蠢问题。

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

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

我想实现这样的目标:

double myarray [total][20000];

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

cin>>total

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

谢谢。

最佳答案

使用 vectorvector:

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++ 中,静态数组的大小必须在编译时已知,这就是为什么你不能读入一个数字并使用它,而使用 vectors 你可以在运行时调整它们的大小.

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com