bitset容器

版权声明:本文为CSDN博主「vocaloid01」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vocaloid01/article/details/82798450

bitset存储二进制数位。

bitset就像一个bool类型的数组一样,但是有空间优化。

bitset中的每个元素都能单独被访问,例如对于一个叫做a的bitset,表达式a[3]访问了它的第4个元素,就像数组一样。

(但是输出单独访问结果不能用printf,和bitset有关的输出都用cout)

另外bitset的大小在编译时就需要确定,也就是说bitset<>的尖括号中写的是大小。
 

#include <iostream>

#include <bitset>

using namespace std;

 
bitset<32> a(string("11111"));//注意是右对齐 

bitset<2> b(string("10101"));//过长从头开始取 

bitset<32> c(16);//保存进一个int的常用写法 


int main()
{

	cout << a << endl;

	cout << b << endl; 

	cout << c << endl

        return 0;

}

bitset的运算就像一个普通的整数一样,可以进行与(&)、或(|)、异或(^)、左移(<<)、右移(>>)操作。

<caption> 初始化bitset对象的方法 </caption>
bitset<n> b; b有n位,每位都为0
bitset<n> b(u); b是unsigned long型u的一个副本
bitset<n> b(s); b是string对象s中含有的位串的副本
bitset<n> b(s, pos, n); b是s中从位置pos开始的n个位的副本

 

 

 

 

 

<caption> bitset操作 </caption>
b.any() b中是否存在置为1的二进制位?
b.none() b中不存在置为1的二进制位吗?
b.count() b中置为1的二进制位的个数
b.size() b中二进制位的个数
b[pos] 访问b中在pos处的二进制位
b.test(pos) b中在pos处的二进制位是否为1?
b.set() 把b中所有二进制位都置为1
b.set(pos) 把b中在pos 处的二进制位置为1
b.reset() 把b中所有二进制位都置为0
b.reset(pos) 把b中在pos处的二进制位置为0
b.flip() 把b中所有二进制位逐位取反
b.flip(pos) 把b中在pos处的二进制位取反
b.to_ulong() 用b中同样的二进制位返回一个unsigned long值
os << b 把b中的位集输出到os流

 

全部评论

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务