如何创建一个2MB的数组或向量,并用随机整数填充它

Vec*_*ihi 0 c++ arrays io vector

我想创建一个静态大小(2mb)的容器(在c ++/visual studio 2008中),可能是一个数组或一个向量,并用一些随机整数填充它.

有一个简单的方法吗?

谢谢.

我想过做那样的事情:

int x[1048576];

for (int i=1; i<1048576; i++)
{
    int r = rand()%i;
    x[i] = r;
}
Run Code Online (Sandbox Code Playgroud)

但我认为让一个for循环看起来有点奇怪?这就是为什么我甚至要求有一个标准的程序来完成这项工作.

Sil*_*lex 5

只需使用以下内容:

#include <ctime>
#include <vector>
#include <cstdlib>
#include <algorithm>

...

// Create array
std::vector<int> arr(SIZE); 
// std::array<int, SIZE> arr; // for a static array;

// Seed randomness
std::srand(std::time(NULL));

// Randomize values
std::generate(arr.begin(), arr.end(), &std::rand);
Run Code Online (Sandbox Code Playgroud)

像普通数组一样使用数组:

for(int i = 0; i != arr.size(); ++i)
    cout << arr[i] << endl;
Run Code Online (Sandbox Code Playgroud)

并且不需要delete[]或任何其他因为vector为您管理这个.

或者,您可以创建一个"随机" iterator,它将产生随机值.这将允许您在创建时创建和填充向量,结束结果将如下所示:std::vector<int> arr(rand_iterator(SIZE), rand_iterator());但它更多的工作.