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)
那就是说,我不确定你为什么认为你不能使用循环.他们是有原因的.你应该只使用现成的功能fill或fill_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>改用.