【发布时间】:2019-10-27 22:35:32
【问题描述】:
首先让我说我对编程很陌生。解决方案可能非常明显。
基本上我需要编写一个代码,在 1 到 500 之间随机生成 10,000 个数字(有些数字会在整个数组中重复出现。问题是,要给所述数组赋值,我的意思是把它放在一个函数中输入 int 并从那里开始,但数组根本不适合函数。在这种情况下,有没有办法使用一个循环为数组中的所有变量赋值?可以在函数之外完成吗?
如果我尝试从函数中调用它,我会收到这 2 条警告消息:
1) 警告 C6262 函数使用 '40012' 字节的堆栈:超过 /analyze:stacksize '16384'。考虑将一些数据移动到堆中。
2) 警告 C6201 索引 '10000' 超出有效索引范围 '0' 到 '9999' 对于可能堆栈分配的缓冲区 'numsinarray'
编辑:我在 Visual Studio 2019 上工作
这是代码
#include <iostream>
#include <random>
using namespace std;
std::random_device seed;
std::mt19937 mersenneTwister(seed());
const int AmountOfNum = 10000;
const int RandomInt(int min, int max);
int NumGen(int min, int max);
int main()
{
}
const int RandomInt(int min, int max)
{
std::uniform_int_distribution<int> distribution(min, max);
return distribution(mersenneTwister);
}
int NumGen(int min, int max)
{
int numsinarray[AmountOfNum];
for (int i = 0; i <= AmountOfNum; i++)
{
numsinarray[i] = RandomInt(1, 500);
}
}
【问题讨论】:
-
嗯。您的代码看起来没问题,除了错误所说的数组对于您的平台来说可能太大了。为了完整起见,您在哪个平台上?
-
您需要使用 operator new 来在堆上分配足够的空间来溢出袋子。
-
我在 Visual Studio 2019 上工作。你的意思是用新的替换数组的变量吗?
-
你应该直接使用
std::vector而不是new