如果不遍历每个元素,如何使用new创建数组并将每个元素初始化为某个值?
bool* a = new bool[100000];
使用VS 2008。
谢谢!
答案 0 :(得分:14)
除了GMan上面所说的,我相信你可以为你构建的向量中的每个值指定一个初始值,就像这样..
vector<bool> a (100000, true);
答案 1 :(得分:12)
在这种情况下,您可以将其设置为false
的唯一值为:
bool* a = new bool[100000]();
那就是说,我不确定你为什么认为你不能使用循环。他们是有原因的。您应该使用现成的函数fill
或fill_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 false
和1 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