4

我想枚举布尔表示[0,31]并将其存储以tries供以后使用。

static const int N = 5;
vector<bool> tries(N);

for(int i = 0;i < (2<<N); i++){

    //can vector<bool> initialized by int?
    //so I don't have to do bit operation

    for (int t = 0; t < N; ++t)
    {
        tries[t] = i&(1UL<<t);
    }

...
}
4

1 回答 1

5

std::vector< bool >不能这样做,但std::bitset可以。由于在您的情况下向量的大小是恒定的,因此您应该使用std::bitset< 5 >. 只需使用您想要的非负整数值对其进行初始化。

请注意,bitset它不提供(或模仿)Container 接口,但它确实提供了一个operator []返回的位代理对象,例如vector<bool>.

于 2013-07-10T03:55:13.700 回答