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

yua*_*uan 4 c++

我想枚举bool表示形式[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);
    }

...
}
Run Code Online (Sandbox Code Playgroud)

Pot*_*ter 5

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

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