关于c ++中bitset的问题

dat*_*ili 2 c++ stl bitset

我试图实现以下代码

#include <iostream>
#include <bitset>

using namespace std;
int main(){
    //bitset<4>mybits;
    //cout<<mybits<<endl;
    int a[]={3,1,4,5,7,8};
    int max=a[0];
     int t=sizeof(a)/sizeof(a[0]);
       for (int i=1;i<t;i++){
             if (a[i]>max){
                 max=a[i];
             }
       }

       bitset<max+1>mybits;







     return 0;
}
Run Code Online (Sandbox Code Playgroud)

但它说max必须有恒定的值做什么?这里我知道最大元素是8但是想象一下我们从键盘输入数字在这种情况下最大数字是未知的谢谢

Gre*_*g S 8

问题:必须在编译时知道C++ bitset的大小,因此size是bitset的模板参数.

可能的解决方案(可能比使用更好的std::vector<bool>,由其他海报的建议):如果你想使用一个bitset的大小可以在运行时解决,您可以使用来,dynamic_bitset升压库.

在你的情况下,你将构建它

boost::dynamic_bitset<> mybits(max+1);
Run Code Online (Sandbox Code Playgroud)