由 int 初始化的 can 向量<bool>

can vector<bool> initialized by int

本文关键字:lt bool gt 向量 int 初始化 can      更新时间:2023-10-16

我想枚举[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);
    }
...
}

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

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