【发布时间】:2021-02-13 20:03:24
【问题描述】:
我有以下代码:
#include <random>
#include <vector>
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
const int N=100000;
int main() {
default_random_engine Generator(time(0));
uniform_real_distribution<float> dist(0.0f,nextafter(1.0f, DBL_MAX));
array<float,N> a{0};
//vector<float> a(N,0);
for ( auto it = a.begin(); it != a.end(); ++it ){
*it=dist(Generator);
}
return 0;
}
我的歧义是当N为100000时可以生成数组a,但是当N变为100万时,它立即退出程序,退出值不为零!换句话说,它崩溃了。但是,当我使用向量而不是数组时,甚至可以通过这种方式精确生成数百万个元素。谁能解释一下?数组是否有某种限制来产生大量数字?
【问题讨论】:
-
使用 std::vector 将存储放在堆上。堆栈是有限的资源,通常在 1 到 10 MB 之间,具体取决于系统。
标签: c++ arrays vector containers limit