第十一章 标准库bitset类型.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标准库bitset类型 标准库bitset类型 有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明: #include bitset B6 d U. @9 [* Y1 H) l using std::bitset; l4 m% T7 e7 h 3.5.1 bitset的定义和初始化, q$ j+ L) \7 S+ F% V6 |1 v) E 表3-6列出了bitset的构造函数。类似于vector,bitset类是一种类模板;而与vector不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset时,要明确bitset含有多少位,须在尖括号内给出它的长度值: bitset32 bitvec; //32位,全为0。 给出的长度值必须是常量表达式(2.7节)。正如这里给出的,长度值必须定义为整型字面值常量或是已用常量值初始化的整数类型的const对象。4 A) }* C! @3 S7 [: d 这条语句把bitvec定义为含有32个位的bitset对象。和vector的元素一样,bitset中的位是没有命名的,程序员只能按位置来访问它们。位集合的位置编号从0开始,因此,bitvec的位序是从0到31。以0位开始的位串是低阶位(low-order bit),以31位结束的位串是高阶位(high-order bit)。% H4 x2 l2 F, l, t, j 表3-6 初始化bitset对象的方法3 D7 h- Y/ g; l* T: N5 i bitsetn b; b有n位,每位都为0; J; O4 {7 ~. Q B bitsetn b(u); P3 M; S! z3 _$ X$ M0 E! y b是unsigned long型u的一个副本, @9 I8 w; H9 M( I4 W% V bitsetn b(s); b是string对象s中含有的位串的副本 bitsetn b(s, pos, n); b是s中从位置pos开始的n个位的副本9 z T( o0 }# F3 C9 B 1. 用unsigned值初始化bitset对象 当用unsigned long值作为bitset对象的初始值时,该值将转化为二进制的位模式。而bitset对象中的位集作为这种位模式的副本。如果bitset类型长度大于unsigned long值的二进制位数,则其余的高阶位置为0;如果bitet类型长度小于unsigned long值的二进制位数,则只使用unsigned值中的低阶位,超过bitet类型长度的高阶位将被丢弃。4 o0 N- h0 C1 ?* ~# U7 j# @ ? 在32位unsigned long的机器上,十六进制值0xffff表示为二进制位就是十六个1和十六个0(每个0xf可表示为1111)。可以用0xffff初始化bitset对象: // bitvec1is smaller than the initializer bitset16 bitvec1(0xffff); // bits 0 ... 15 are set to 1 // bitvec2same size as initializer! t8 T2 O# p v3 C) X+ q+ w3 p bitset32 bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ... 31 are 0 // on a 32-bit machine, bits 0 to 31 initialized from 0xffff% {+ t# l0 l2 H8 h7 m- k bitset128 bitvec3(0xffff); // bits 32 through 127 initialized to zero# ^/ _5 j# A/ d$ |4 M 上面的三个例子中,0到15位都置为1。由于bitvec1位数少于unsigned long的位数,因此bitvec1的初始值的高阶位被丢弃。bitvec2和unsigned long长度相同,因此所有位正好放置了初始值。bitvec3长度大于32,31位以上的高阶位就被置为0。( V6 y/ V( r+ o1 P+ w/ a 2. 用string对象初始化bitset对象 当用string对象初始化bitset对象时,string对象直接表示为位

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档