This question already has answers here:
Define bitset size at initialization?
(6个答案)
3年前关闭。
我试图实现以下代码
但是它说最大必须具有恒定值该怎么办?在这里我知道最大元素是八个,但想象一下在这种情况下我们从键盘输入数字是未知的,谢谢
(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