如何使用new在C++中创建数组并初始化每个元素?

B S*_*ven 6 c++ arrays initialization new-operator visual-studio-2008

如果不迭代每个元素,如何使用new创建数组并将每个元素初始化为某个值?

bool* a = new bool[100000];
Run Code Online (Sandbox Code Playgroud)

使用VS 2008.

谢谢!

rch*_*ley 14

除了GMan上面所说的,我相信你可以为你构建的向量中的每个值指定一个初始值,如下所示.

vector<bool> a (100000, true);
Run Code Online (Sandbox Code Playgroud)


GMa*_*ckG 12

在这种情况下,您可以设置的唯一值是false:

bool* a = new bool[100000]();
Run Code Online (Sandbox Code Playgroud)

那就是说,我不确定你为什么认为你不能使用循环.他们是有原因的.你应该只使用现成的功能fillfill_n(取决于口味).


注意使用new"raw"就像是糟糕的编程习惯.使用std::vector<bool>*:

std::vector<bool> v;

v.resize(100000);
std::fill(v.begin(), v.end(), true); // or false
Run Code Online (Sandbox Code Playgroud)

要么:

std::vector<bool> v;

v.reserve(100000);
std::fill_n(std::back_inserter(v), 100000, true); // or false
Run Code Online (Sandbox Code Playgroud)

*当然,std::vector<bool>碰巧打破了正确的容器界面,所以实际上并没有存储bool.如果这是一个问题,请std::vector<char>改用.