STL容器 -- Bitset
2016-09-20 19:01
351 查看
核心内容:Bitset 是 STL 中的二进制容器, 存放的时 bit 位元素, 每一位只占一个 bit 位, 取值 0 或者 1, 可以像整形元素一样按位与或非, 并且大大优化了时间和空间复杂度.
头文件: #include <bitset>
构造方法:
常用操作:
常见运算:
头文件: #include <bitset>
构造方法:
bitset<length> b //b为bitset对象,它能容纳length个bit位,每个元素初值为0 bitset<length> b(unsigned long u) //b有length位,并用u赋值;如果u超过n位,则顶端被截除 bitset<length> b(string s) //以字符串 s 初始化长度为 length 的 b, s 必须仅包含01 bitset<length> b(string s, pos) // b是 s 中从位置 pos 开始位的副本,前面的多余位自动填充0 bitset<length> b(s, pos, num) //b是s中从位置pos开始的num个位的副本,如果num<n,则前面的空位自动填充0 cin >> b //如果输入的不是0或1的字符,只取该字符前面的二进制位.
常用操作:
b.any( ) //b 中是否存在值为 1 的二进制位 b.none( ) //b 中是否不存在值为 1 的二进制位 b.set() //对 b 中全部元素设置为 1 b.reset() //对 b 中全部元素设置为 0 b.set(pos) //即 b[pos] = 1 b.set(pos, value) //即 b[pos] = value b.reset(pos) //即 b[pos] = 0 b.to_string() //返回 b 的 string 表示法 b.to_ulong //返回 b 的 long 型表示法 b.count() //返回二进制为 1 的个数 b.size() //二进制位的个数 b.flip() //所有二进制位按位取反 b.flip(pos) //处于 pos 位置的数取反 b.test(pos) //在pos处的二进制位是否为1?
常见运算:
b1 = b2 & b3; //按位与 b1 = b2 | b3; //按位或 b1 = b2 ^ b3; //按位异或 b1 = ~b2; //按位补 b1 = b2 << 7; //移位
相关文章推荐
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
- jenkins自动化编译之android gradle编译git仓库源码
- Android ViewPager实现滑动切换页面+底部tab点击切换页面(类微信首页)
- android的xml布局设计中设置文字外观textappearance解析
- ibatis3 一个小bug
- Android横向界面锁屏时生命周期异常情况处理--Activity异常销毁重建
- Linux中Eclipse下搭建Web开发环境
- 【BZOJ-1090】字符串折叠 区间DP + Hash
- 特殊字符 js处理
- 运维团队(OPS)与技术团队有效沟通配合探讨
- 指针疑惑
- 需要完善的内容
- (一)内核相关的基础概念
- GitHub使用入门
- iBatis应用之获取表的元数据
- ibatis自动生成键selectkey(Oracle、MYSQL、MSSQL、SQLITE)
- Linux下定时备份MySQL数据库的Shell脚本
- 第四周项目3-单链表应用(2)
- LeetCode23. Merge k Sorted Lists分治法
- VR Android播放器实现(二)