将矢量<vector <bool>&gt; </vector <bool>归零的最快方法

时间:2014-01-04 04:08:13

标签: c++ vector

我尝试过这样的事情:

vector<bool> x(10, 0);
vector<vector<bool> > hello(10, x);

/*some modifications on hello*/

memset(&hello, 0, sizeof(hello));

我的程序编译,但它打破了。知道如何尽快完成这项操作吗?我知道memset可能因嵌套向量而无效,但我不确定如何完成此任务。

3 个答案:

答案 0 :(得分:2)

我会使用它,它会重用您在问题中声明的x变量。

std::fill(hello.begin(), hello.end(), x);

答案 1 :(得分:2)

for(auto& bv : hello) 
    std::fill(begin(bv), end(bv), false);

或者如果您想使用x作为原型

std::fill(begin(hello), end(hello), x);

答案 2 :(得分:0)

有了你的代码,我会写......

for( auto& v : hello ) { v = x; }

假设x仍为全零。它足够清晰,避免拖入<algorithm>

Hewever,将位矩阵的表示从矢量向量更改为单个向量,或者如果它是固定大小,更改为单个bitset,可能会更快。