This question already has answers here:
Define bitset size at initialization?

(6个答案)


3年前关闭。




我试图实现以下代码
#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;
}

但是它说最大必须具有恒定值该怎么办?在这里我知道最大元素是八个,但想象一下在这种情况下我们从键盘输入数字是未知的,谢谢

最佳答案

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

一个可能的解决方案(并且可能比其他海报建议的使用std::vector<bool>更好):如果要使用可以在运行时固定大小的位集,则可以使用dynamic_bitset库中的Boost

在您的情况下,您可以使用

boost::dynamic_bitset<> mybits(max+1);

关于c++ - 关于C++中的位集的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3271518/

10-11 21:22