脚本宝典收集整理的这篇文章主要介绍了bitset,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
(quad)bitset 是一个类似于 bool 数组的东西(可以直接代替),它里面存到只有二进制,每一位只占 1 bit (异常的小)。bitset 的原理大概是将很多数压成一个,从而节省空间和时间。一般 bitset 会让你的算法复杂度/32(玄学玩意)。
#include<bitset>//头文件
bitset<300> bit;//定义
bitset<30> bit (string("10101010"));//定义字符串
cout<<bit<<endl;//输出000000000000000000000010101010
bitset<30> bit;
bit=10;
cout<<bit<<endl;//输出000000000000000000000000001010
//整数转化成对应的二进制
bitset 支持所有的位运算,比如:
bitset<30> b1 (string("101010"));
bitset<30> b2 (string("110101"));
cout<<(b1^b2)<<endl;//输出000000000000000000000000011111
bitset 有很多有用的库函数;
bitset<8> bit ("10011011");
bit.size() //返回大小(位数)//8;
bit.count() //返回 1 的个数
bit.any() //返回是否有 1
bit.none() //返回是否没有 1
bit.set() //全部变成 1
bit.set(p) //将第 p+1 位变成 1 (bitset 是从 0 位开始的)
bit.set(p,x) //将第 P+1 为变成 x
bit.reset() //全部变成 0
bit.reset(p) //将第 p+1 位变成 0
bit.flip() //全部取反
bit.flip(p) //将第 p+1 位取反
bit.to_ulong() //返回它转换为unsigned long的结果,如果超出范围则报错
bit.to_ullong() //返回它转换为unsigned long long的结果,如果超出范围则报错
bit.to_string() //返回它转换为string的结果
比如:
bitset<8> bit ("10011011");
string s = foo.to_string(); //将bitset转换成string类型
unsigned long a = foo.to_ulong(); //将bitset转换成unsigned long类型
unsigned long long b = foo.to_ullong(); //将bitset转换成unsigned long long类型
cout << s << endl; //10011011
cout << a << endl; //155
cout << b << endl; //155
以上是脚本宝典为你收集整理的bitset全部内容,希望文章能够帮你解决bitset所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。