bitset 模板类由若干个位(bit)组成,它提供一些成员函数,使程序员不必通过位运算就能很方便地访问、修改其中的任意一位。bitset 模板类在头文件 中定义如下:

template <size_t N>
class bitset
{...
};

size_t 可看作 unsigned int。将 bitset 实例化时,N 必须是一个整型常数。例如:

bitset <40> bst;

则 bst 是一个由 40 个位组成的对象,用 bitset 的成员函数可以方便地访问其中任意一位。bitset 中的位从 0 开始编号,第 0 位是最右边的位。

bitset 有许多成员函数,有些成员函数执行的就是类似于位运算的操作。bitset 成员函数列表如下:

 bitset <N> & operator &= (const bitset <N> & rhs);  //和另一个 bitset 对象进行与操作bitset <N> & operator |= (const bitset <N> & rhs);  //和另一个 bitset 对象进行或操作bitset <N> & operator ^= (const bitset <N> & rhs);  //和另一个 bitset 对象进行异或操作bitset <N> & operator <<= (size_t num);  //左移 num 位bitset <N> & operator >>= (size_t num);  //右移 num 位bitset <N> & set();  //将所有位全部设成 1bitset <N> & set(size_t pos, bool val = true);  //将第 pos 位设为 valbitset <N> & reset();  //将所有位全部设成0bitset <N> & reset (size_t pos);  //将第 pos 位设成 0bitset <N> & flip();  //将所有位翻转(0变成1,1变成0)bitset <N> & flip(size_t pos);  //翻转第 pos 位reference operator[] (size_t pos);  //返回对第 pos 位的引用bool operator[] (size_t pos) const;  //返回第 pos 位的值reference at(size_t pos);  //返回对第 pos 位的引用bool at (size_t pos) const;  //返回第 pos 位的值unsigned long to_ulong() const;  //将对象中的0、1串转换成整数string to_string () const;  //将对象中的0、1串转换成字符串size_t count() const;  //计算 1 的个数size_t size () const;  //返回总位数bool operator == (const bitset <N> & rhs) const;bool operator != (const bitset <N> & rhs) const;bool test(size_t pos) const;  //测试第 pos 位是否为 1bool any() const;  //判断是否有某位为1bool none() const;  //判断是否全部为0bitset <N> operator << (size_t pos) const;  //返回左移 pos 位后的结果bitset <N> operator >> (size_t pos) const;  //返回右移 pos 位后的结果bitset <N> operator ~ ();  //返回取反后的结果bitset <N> operator & (const bitset <N> & rhs) const;  //返回和另一个       bitset 对象 rhs 进行与运算的结果bitset <N> operator | (const bitset <N> & rhs) const;  //返回和另一个 bitset 对象 rhs 进行或运算的结果bitset <N> operator ^ (const bitset <N> & rhs) const;  //返回和另一个 bitset 对象 rhs 进行异或运算的结果

bitset 的用法。

#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main()
{bitset<7> bst1;bitset<7> bst2;cout << "1) " << bst1 << endl; //输出 1) 0000000bst1.set(0,1);//将第0位变成1,bst1变为 0000001cout << "2) " << bst1 << endl; //输出 2) 0000001bst1 <<= 4; //左移4位,变为 0010000cout << "3) " << bst1 << endl; //输出 3) 0010000bst2.set(2);//第二位设置为1,bst2变成  0000100bst2 |=bst1; // bst2变成  0010100cout << "4) " << bst2 << endl; //输出 4) 0010100cout << "5) " << bst2.to_ulong () << endl; //输出 5) 20bst2.flip(); //每一位都取反,bst2变成 1101011bst1.set(3); //bst1变成  0011000bst2.flip(6); //bst2变成 0101011bitset<7> bst3 = bst2^ bst1;//bst3 变成 0110011cout << "6) " << bst3 << endl; //输出 6) 0110011cout << "7) " << bst3[3] << "," << bst3[4] << endl; //输出 7) 0,1return 0;
}

C++ bitset类相关推荐

  1. C++ STL bitset类常用函数的使用

    bitset创造一个内含位或布尔值且大小固定的数组(array).当需要管理各种标识,并需要以标识的任意组合表现变量时,即可使用bitset模板类. 接下来介绍基本函数的用法: count()     ...

  2. c++ bitset类用法

    有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...

  3. java bitset类_Java Bitset类 - Java 教程 - 自强学堂

    Java Bitset类 一个Bitset类创建一种特殊类型的数组来保存位值.BitSet中数组大小会随需要增加.这和位向量(vector of bits)比较类似. 这是一个传统的类,但它在Java ...

  4. JAVA数据结构 之 BitSet 类的使用方法

    Java中BitSet的基本用法 JAVA中BitSet就是"位图"数据结构,根据"位图"的语义,数据的存在性可以使用bit位上的1或0来表示:一个bit具有2 ...

  5. Java BitSet使用场景和示例

    一.什么是BitSet? 注:以下内容来自JDK API: BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个boolean值.用非负的整数将BitSet的位编入索引.可以对每个编 ...

  6. Java.util包中常用的类

    Java.util包 Java.util.ArrayDeque类 Java.util.ArrayList类 Java.util.Arrays类 Java.util.BitSet类 Java.util. ...

  7. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  8. C++容器 bitset

    C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码. 要使用bitset 类我们必须包含相关的头文件    #include <bitset> bitset除了可 ...

  9. java bitset用途_BitSet的用法

    1,BitSet类 大小可动态改变, 取值为true或false的位集合.用于表示一组布尔标志. 此类实现了一个按需增长的位向量.位 set 的每个组件都有一个 boolean 值.用非负的整数将 B ...

最新文章

  1. Annu. Rev. Genet:植物微生物组——系统性见解与展望
  2. GitLab+Jenkins+Ansible
  3. 利用Gearman,搭建异步分布式计算平台
  4. python 分布式框架_python分布式框架rq的使用
  5. 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的美化全攻略
  6. 计算机网络 哪个教材好,学习计算机网络哪本教材最好?
  7. 外部集成 网页制作_外部服务的集成测试
  8. 谷歌开源 Python Fire:可自动生成命令行接口
  9. 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
  10. 移动前端页面与Chrome的远程真机调试
  11. matlab log函数
  12. 【视频音效素材】火遍全网的2000款热门短视频搞笑剪辑素材+经典音效包素材来了
  13. 八类网线和七类网线的区别_超6类和7类网线的区别
  14. 运用系统分析方法,分析校园二手交易平台的可行性
  15. QT动态加载DLL包括加载DLL中的类及其成员函数
  16. 微信网页扫码支付(公众号)JAVA实现
  17. (转自林达华)深入问题本身
  18. Android 安卓动画 属性动画 - 缩放动画
  19. 玩qq游戏提示计算机内存不足,为什么电脑运行游戏后提示内存不足
  20. mel表达式_Maya Mel基础知识教程 了解运用Mel

热门文章

  1. cef在android中使用_关于富文本在Android中的应用以及遇到的坑
  2. 福大计算机课程表,教学文件 - 福州大学电气工程与自动化学院
  3. PP视频如何将默认缓存清晰度设置成超清
  4. 追加一列 python_常用的python代码总结
  5. 用自定义注解做点什么——自定义注解有什么用
  6. linux 文件名带特殊符号,Linux删除含有特殊符号文件名的文件
  7. 用dl元素编辑html个人信息,html dl dt dd标签元素语法结构与使用
  8. android系统电视缺点,高清智能电视安卓系统优势与不足解析
  9. 文字层一点就变红_学习观察神经网络:可视化整个模型训练中卷积层的激活
  10. 关键词热度分析工具_谷歌SEO推广排名的关键要素(一)利用谷歌关键词分析工具分析关键词...