STL泛型编程-bitset位集合容器

bitset位集合容器

    bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,因而很节省内存空间。

    使用bitset,需要声明头文件"#include <bitset>"

bitset类方法列表(bitset<n>b)

方法功能
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流

  1. 创建bitset对象

创建bitset对象时,必须指定容器大小。bitset对象大小一经定义,无法修改。

bitset<100000> b//定义对象b,它能容纳100000个元素,即100000个bit位

       2.  设置元素值

  • 采用下标法
  • 采用set()方法,一次性将元素设置为1
  • 采用set(pos)方法,将某pos位设置为1
  • 采用reset(pos),将某pos位设置为0
    #include <bitset>
    #include <iostream>
    using namespace std;
    int main(int argc,char* argv[])
    {
        bitset<10> b;
        int i;
        b[1]=1;
        b.set(6,1);
        for(i=b.size()-1;i>=0;i--)
            cout<<b[i];
        cout<<endl;
        b.set();
        for(i=b.size()-1;i>=0;i--)
            cout<<b[i];
        cout<<endl;
        b.reset(0);
        b.reset(9);
         for(i=b.size()-1;i>=0;i--)
            cout<<b[i];
        cout<<endl;
        b.reset();
         for(i=b.size()-1;i>=0;i--)
            cout<<b[i];
        cout<<endl;
        return 0;
    }
    /*
    运行结果:
    0001000010
    1111111111
    0111111110
    0000000000
    */

3.输出元素

  • 下标输出
  • 输出流输出全部
    #include <bitset>
    #include <iostream>
    using namespace std;
    int main(int argc,char* argv[])
    {
        bitset<10> b;
        int i;
        b.set();
        b.set(0,0);
        b.set(2,0);
        b.set(3,0);
        b.set(4,0);
        b.set(5,0);
        b.set(7,0);
        b.set(8,0);
        for(i=b.size()-1;i>=0;i--)
            cout<<b[i];
        cout<<endl;
        cout<<b<<endl;
        return 0;
    }
    /*
    运行结果:
    1001000010
    */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值