STL之bitset
bitset是C++的类库,它便于我们管理一系列的bit位。
1.使用前加上头文件:
#include <bitset>using namespace std;//2.bitset的构造:bitset<bitNum>b; //具有bitNUm位的b/*3.bitset的操作:1)b.all()//b中是否全是12)b.any()//b中是否存在值为1的二进制位?3)b.none()//b中不存在值为1的二进制位吗?4)b.count()//b中含有多少个值为1的二进制位5)b[pos]//访问b在pos位中的二进制(最右边的位为第一位(b[0]))6)b.set()//把b中所有二进制位都置为17)b.set(pos)//把b中 b[pos] 置为18)b.reset()//把b中所有二进制位都置为09)b.reset(pos)//把b中 b[pos] 置为010)b.flip()//把b中所有二进制逐位取反11)b.flip(pos)//把b中b[pos]取反12)b.to_string()//用b中同样的二进制位返回一个字符串13)b.to_ulong()//用b中同样的二进制位返回一个unsigned long值14) b.to_ullong()//用b中同样的二进制位返回一个unsigned long long值
*///测试代码:#include <iostream>#include <stdio.h>#include <bitset>#include <string>using namespace std;int main(){bitset<5>b,c;//具有5个bit位的bitset b,c//0的二进制:00000//30的二进制:01111b = 0;//从右往左,将30的5个bit位存入bitset b,此时b相当一个数组,下标从0开始c = 30;//printf("%d",b[0]);编译,出现错误,使用bitset不能用printf来访问cout<<"b: "<<b<<endl;cout<<"c: "<<c<<endl;cout<<"c二进制位全是1吗? "<<c.all()<<endl;cout<<"c 的bit位数 "<<c.size()<<endl;//之前定义的时候,bitNUm只取了5位cout<<"b中存在为1的二进制吗? "<<b.any()<<" c中存在为1的二进制吗? "<<c.any()<<endl;cout<<"b中不存在为1的二进制吗? "<<b.none()<<" c中不存在为1的二进制吗? "<<c.none()<<endl;cout<<"b中有多少个为1的二进制位? "<<b.count()<<" c中有多少个为1的二进制位? "<<c.count()<<endl;cout<<"b的第1位是:"<<b[0]<<endl;cout<<"b的第5位是:"<<b[4]<<endl;cout<<"c的第1位是:"<<c[0]<<endl;cout<<"c的第5位是:"<<c[4]<<endl;b.set();cout<<"经过b.set()后,b变为"<<b<<endl;b.reset();cout<<"再经过b.reset()后,b变为"<<b<<endl;c.set(0);cout<<"经过c.set(0)后,c的第1位(c[0])变为:"<<c[0]<<endl;c.reset(0);cout<<"经过c.reset(0)后,c的第1位变为:"<<c[0]<<endl;b.flip();cout<<"再经过b.flip()后,b变为"<<b<<endl;b.flip(4);cout<<"经过b.flip(4),b的第5位变为:"<<b[4]<<endl;cout<<"b转换为同样的字符串形式:";string s = b.to_string();cout<<s<<endl;cout<<"b的二进制位返回的unsigned long:";unsigned long x = b.to_ulong();cout<<x<<endl;return 0;}
官方通道: bitset reference C++
STL之bitset相关推荐
- 标准非STL容器 : bitset
1. 概念 什么是"标准非STL容器"?标准非STL容器是指"可以认为它们是容器,但是他们并不满足STL容器的所有要求".前文提到的容器适配器stack.que ...
- STL中bitset的用法的整理
构造函数 bitset<n> b; b有n位,每位都为0.参数n可以为一个表达式. 如bitset<5> b0;则"b0"为"00000&quo ...
- 位运算 进制转化 STL中bitset用法
2017-08-17 16:27:29 writer:pprp /* 题目名称:输入十进制以二进制显示 程序说明:同上 作者:pprp 备注:无 日期:2017/8/17 */ #include &l ...
- STL:bitset用法详解
文章目录 前言 声明 输入输出 访问与修改 位运算 所谓bitset,就是bit组成的set (逃) 前言 bitset的诸多好处: 1.节约空间 2.增加一些新的功能 3.几乎没有副作用 4.有了1 ...
- STL学习小记--与C++模板相关的几个特性
先谈谈模板在我脑子里的典型吧 template<class T> const T& GetMax(const T& t1, const T& t2) {return ...
- POJ3748 位操作【位运算+STL】
位操作 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9433 Accepted: 3796 Description 假 ...
- bzoj2208 [Jsoi2010]连通数 强连通分量缩点+拓扑排序+bitset
Description 对于100%的数据,N不超过2000. Solution 容易想到要tarjan缩点按拓扑序递推,但是去重的步骤不好弄 C++STL中有bitset,用这个当成二进制按位状压即 ...
- 范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
文章结束给大家来个程序员笑话:[M] 第一次加入生赛,心情万分激昂,我不是大牛,但是在子畦大牛的率领下,刚好排到了校赛的第20名,升级省赛. 广东的ACM省赛弄得非常好,无论是职员安排还是举办方对参赛 ...
- 基础练习 01字串(取位操作)
基础练习 01字串 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 ...
最新文章
- 什么才是有效的工程教育的方法?
- CentOS 6.5 手动rpm包安装gcc、g++
- CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破
- mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...
- PAT---数字分类
- 面试 其实就是短时间内展现出你最好的自我
- 玻璃质感_几何体素描画法:几何体画法步骤教程和玻璃质感画法教程,快学习...
- 爱心的数学函数方程_笛卡尔的爱心函数
- 《下学梯航》(全文)
- 二手手机验机教程(不拆机)
- pandas分组计算平均值_Pandas之分组计算
- 计算机网络手写笔记图片,一键收藏!清华学子这样记笔记!
- 怎么在电脑上创建一个虚拟机
- 免费分享一个最完美的英语学习素材 Englishpod
- 【2023秋招】10月9日字节跳动校招题目以及满分解析
- 在c51语言的循环语句中 用作循环结束,在C51语言的循环语句中,用作循环结束条件判断的表达式为()...
- Windows10系统安装Oracle 11gR2
- svn co 的常用命令解释
- Teamcenter、TIA Portal、NX MCD是如何结合在一起的
- 自动剪辑视频的软件,视频自动剪辑生成软件如何剪辑视频和制作视频
热门文章
- 这个Python库助你发现网络图的社区结构
- 肝!22款超好用的CLI工具
- 良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具
- 100 个网络基础知识,看完成半个网络高手
- 人工智能必看的 45 篇论文(附下载地址)
- 3分钟学会python_3分钟学会一个Python小技巧
- bitnamigitlab_Bitnami Gitlab 安装配置 step by step
- python 并发访问数据库_【数据库】如何实现python3实现并发访问水平切分表
- mysql数据库提示2005_Mysql数据库从本地导出 服务器上导入时报 ERROR 2005 HY000 Unknown MySQL ser...
- 语音特征提取: MFCC的理解