C++ bitset用法整理

一、bitset 头文件

C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。

二、bitset常用构造函数

1、bitset<n> b;
      b有n位,每位都为0;参数n可以为一个表达式;
      如bitset<5> b0;则"b0"为"00000";
 
2、bitset<n> b(unsigned long u);
      b有n位,并用u赋值;如果u超过n位,则顶端被截除
      如:bitset<5>b0(5);则"b0"为"00101";
 
3、bitset<n> b(string s);
      b是string对象s中含有的位串的副本
      string bitval ( "10011" );
      bitset<5> b0 ( bitval4 );
      则"b0"为"10011";

4、bitset<n> b(s, pos);
     b是s中从位置pos开始位的副本,前面的多余位自动填充0;
     string bitval ("01011010");
     bitset<10> b0 ( bitval5, 3 );
     则"b0" 为 "0000011010";
 
5、bitset<n> b(s, pos, num);
     b是s中从位置pos开始的num个位的副本,如果num<n,则前面的空位自动填充0;
     string bitval ("11110011011");
     bitset<6> b0 ( bitval5, 3, 6 );
     则"b0" 为 "100110";

注意:在用字符串构造时,字符串中只能包含‘0’和‘1’,否则抛出异常;

          可以通过[ ]访问元素,类似数组,注意最低下标为0;

三、可用函数

bool any( )    //是否存在置为1的二进制位?
 
bool none( )  //是否不存在置为1的二进制位,即全部为0?
 
size_t count( ) //二进制位为1的个数;
 
size_t size( )  //二进制位的个数;

flip()  //把所有二进制位逐位取反;
 
flip(size_t pos)  //把在pos处的二进制位取反;
 
bool operator[](   size_type _Pos )  //获取在pos处的二进制位;
 
set()  //把所有二进制位都置为1;
 
set(pos)  //把在pos处的二进制位置为1;
 
reset()  //把所有二进制位都置为0;
 
reset(pos)  //把在pos处的二进制位置为0;

test(size_t pos  // 在pos处的二进制位是否为1?

unsigned long to_ulong( )  // 用同样的二进制位返回一个unsigned long值;

string to_string () //返回对应的字符串.;

最后还有一些类型转换的函数

举个栗子:

    bitset<8> foo ("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类型

参考网上资料整理而成,加油喔!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值