在C++primer上面说,bitset可以用unsigned long来进行初始化,但是上面的例子只是采用了常数如0xffff,而在实际中,当在vs2010中,我采用unsigned long类型的变量来进行初始化时,发现说出现错误,

error C2668: “std::bitset<_Bits>::bitset”: 对重载函数的调用不明确

测试了下,int是4个字节,unsigned long 4个字节,long也是4个字节,但是int 和long都可以用来进行初始化

下面是c++primer里关于bitse采用unsigned long和string进行初始化的讲解,其中尤为注意的是,在bitset中是数的低位在前高位在后

下面是转载的相关的bitset的内容:

功能:处理二进制位的有序集

#include<bitset>

using std::bitset;

  初始化bitset变量的方法:

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个位的副本

注意:n必须是常量表达式。

例如:

bitset<16> bitvec1(0xffff);   // bits 0 ... 15 are set to 1

bitset<32> bitvec2(0xffff);    // bits 0...15 are set to 1; 16...31 are 0

从string对象读入位集的的顺序是从右向左的

string strval("1100");

bitset<32> bitvec3(strval);

string对象和bitset对象之间是反向转化的:string对象的最右边字符(即下标最大的那个字符)用来初始化bitset对象的低阶位(即下标为0的位)。当用string对象初始化bitset对象时,记住这一差别很重要。

   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 long值

os << b

把b中的位集输出到os流

bitset<32> bitvec;   //32bits,all zero

bool is_set=bitvec.any();  //false,all bits are zero

bool is_not_set=bitvec.none();   //true,all bits are zero

size_t bits_set=bitvec.count();   //返回一个size_t类型的bits_set值,统计1的个数

size_t类型是一个与机器相关的unsigned类型,大小足够。

可以用下表操作符来读写或测试某个索引位置的二进制位:

for(int index=0;index!=32;index++){

bitvec[index]=0;

}   //用下表操作符将所有位都置为零

for(int index=0;index!=32;index++){

bitvec.set(index);

}   //用set操作将所有位都置为1

if(bitvec.test(i))

//测试第i位是否为1

if(bitvec[i])

//与上一个函数功能相同

bitvec.set();   //全部置一

bitvec.reset();  //全部置零

unsigned long ulong=bitvec.to_ulong();

cout<<"ulong="<<ulong<<endl;   //当bitvec的长度小于unsigned long时候才可以

最新文章

  1. vert.x学习(四),使用模板解析器ClassLoaderTemplateResolver
  2. Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}
  3. C#写Windows Service(windows服务程序)
  4. js打开没有地址栏下拉条新窗口
  5. JavaScript事件详解-zepto的事件实现
  6. C# 传入引用类型的参数 返回值是否发生变化
  7. V4L2学习笔记【转】
  8. ServiceStack.OrmLite 学习笔记7-复杂点的使用1
  9. IOS开发之路四(UITabBarController)
  10. POJ 3233 Matrix Power Serie
  11. Linux学习笔记----(2)
  12. Objective-C 【继承、变量修饰符(私有变量/方法)、description方法】
  13. yii YII小部件 创建登录表单表单 Login表单
  14. Swift自适应布局(Adaptive Layout)教程(二)
  15. 使用CAS实现无锁列队-链表
  16. JAVA写JSON的三种方法,java对象转json数据
  17. 51nod1340 地铁环线
  18. C# 生成一个带数字的饼图
  19. nginx 哈希表数据结构
  20. Java中Map用法详解

热门文章

  1. UVa OJ 458
  2. 将vue-cli项目配置在nginx上
  3. EMAC IP 核
  4. mac及windows下安装ss实现***
  5. SEO 第八章
  6. Win10本地搭建Apache+PHP运行环境
  7. Spring框架针对dao层的jdbcTemplate操作crud之add添加数据库操作
  8. xcode中自定义log打印
  9. Luogu P3806 点分治模板1
  10. Properties类操作.properties配置文件方法总结