bitset

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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,请注明来意。
标签: