可以通过int </bool>初始化<bool>

时间:2013-07-10 03:51:54

标签: c++

我希望枚举[0,31]的bool表示形式,并将其存储在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);
    }

...
}

1 个答案:

答案 0 :(得分:4)

std::vector< bool >无法执行此操作,但std::bitset可以。由于向量的大小在您的情况下是不变的,因此您应该使用std::bitset< 5 >。只需使用您想要的非负整数值初始化它。

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