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

时间:2011-01-11 05:13:38

标签: c++ arrays visual-studio-2008 initialization new-operator

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

bool* a = new bool[100000];

使用VS 2008。

谢谢!

4 个答案:

答案 0 :(得分:14)

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

vector<bool> a (100000, true);

答案 1 :(得分:12)

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

bool* a = new bool[100000]();

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


注意使用new“raw”就是这样糟糕的编程习惯。使用std::vector<bool> *:

std::vector<bool> v;

v.resize(100000);
std::fill(v.begin(), v.end(), true); // or false

或者:

std::vector<bool> v;

v.reserve(100000);
std::fill_n(std::back_inserter(v), 100000, true); // or false

*当然,std::vector<bool>恰好打破了正确的容器界面,因此实际上并不存储bool。如果这是一个问题,请改用std::vector<char>

答案 2 :(得分:1)

您应该更喜欢矢量方法,但也可以使用memset。

答案 3 :(得分:1)

如果考虑0 is false1 is true - 您可以

bool* a = new bool[100];
std::fill_n( a, 100, 1 ); // all bool array elements set to true
std::fill_n( a, 100, 0 ); // all bool array elements set to false