bitset练习

标准库提供的bitset类简化了位集的处理。bitset其实很简单,只是因为它不如vector和string那样常用,所以很多人都放弃了这么好用的工具。


头文件:#include<bitset>


常用的成员函数:
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
os << b 把b中的位集输出到os流



参考资料:《C++ Primer》

MSDN:http://msdn.microsoft.com/zh-cn/library/zfae7kt8.aspx

#include <iostream> #include <string> #include <bitset> using namespace std; int main() { string str = "10011"; bitset<9>bitvec(str);// 0,1,4为置1,其余为0 string str2 = "Hello,world"; //bitset<500>b2(str2); //error size_t bits_set = bitvec.size(); cout << "bitvec.size()" << bits_set << endl; cout << bitvec << endl; //可以直接输出 cout << "ulong = " <<bitvec.to_ulong() <<endl << endl; bitvec.flip(); bits_set = bitvec.size(); cout << "bitvec.size()" << bits_set << endl; cout << bitvec << endl; cout << "ulong = " <<bitvec.to_ulong() <<endl << endl; bitvec.reset(); bits_set = bitvec.size(); cout << "bitvec.size()" << bits_set << endl; cout << bitvec << endl; cout << "ulong = " <<bitvec.to_ulong() <<endl << endl; return 0; }

执行结果如下所示:

bitvec.size()9
000010011
ulong = 19


bitvec.size()9
111101100
ulong = 492


bitvec.size()9
000000000
ulong = 0


请按任意键继续. . .


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值