bitset基础 发表于 2022-05-11 | 分类于 算法学习 | 一直懒得学orz bitset的移位等位运算复杂度都为w/32(w为bitset位数),故常用bitset优化加减操作,如1+2可转化为(000010)<<2=(0001000) 12345678910111213141516171819const int n=16,k=15;bitset<n> bs;//定义一个n位的bitset,n必须为常量string s1="100001";char s2[]="100001";bitset<6> bs(s1);bitset<6>bs(s2);//用字符串初始化bs.set();//将所有位都变为1bs.reset();//将所有位变为0bs.flip();//将所有位取反bs.reset(k);//将bs[k]置为0,同理flip//k从0开始(同数组)bs.set(k,v);//将bs[k]置为v,等价于bs[k]=vbs.any();//若存在bs[k]为1,则返回truebs.none();//若不存在bs[k]为1,则返回truebs.all();//若bs全为1,则返回truebs.count();//返回bs中1的个数bs.to_string();//返回将bs转化为string后的对象bs.to_ulong();//同理bs.to_ullong();//同理