STL中bitset的用法
终于又来写博客了 ==
bitset存储的是二进数位,就和一个bool性数组差不多。用法上和数组的操作方式也差不多。
每位只占一个字节,大大优化了空间,可以通过数组形式访问。
bitset定义
可以用以下几种方式定义bitset,值得注意的是,bitset在定义的时候必须定义大小,这里8便是我们定义的长度,定义一个空bitset时所有值默认为0;
bitset<> b;
bitset<> bit();
bitset<> tp1(string(""));
bitset<> tp2(bit); cout << " b = " << b << endl;
cout << "bit = " << bit << endl;
cout << "tp1 = " << tp1 << endl;
cout << "tp2 = " << tp2 << endl;
上面代码的输出结果为
b =
bit =
tp1 =
tp2 =
bitset的运算
猜都能猜到bitset肯定是支持位运算的,是的bitset可以直接做位运算
bitset<> tp1(string(""));
bitset<> tp2(string(""));
cout << "(tp1 & tp2) = " << (tp1 & tp2) << endl;
cout << "(tp1 | tp2) = " << (tp1 | tp2) << endl;
cout << "(tp1 ^ tp2) = " << (tp1 ^ tp2) << endl;
cout << "(~tp1) = " << (~tp1) << endl;
cout << "(tp1 &= tp2) = " << (tp1 &= tp2) << endl;
cout << "(tp1 |= tp2) = " << (tp1 |= tp2) << endl;
cout << "(tp1 ^= tp2) = " << (tp1 ^= tp2) << endl;
cout << "(tp1 <<= 1) = " << (tp1 <<= ) << endl;
cout << "(tp1 ^= tp) = " << (tp1 ^= ) << endl;
cout << "(tp1 == tp2) = " << (tp1 == tp2) << endl;
cout << "(tp1 != tp2) = " << (tp1 != tp2) << endl;
这就没什么好说的了,运行结果为
(tp1 & tp2) =
(tp1 | tp2) =
(tp1 ^ tp2) =
(~tp1) =
(tp1 &= tp2) =
(tp1 |= tp2) =
(tp1 ^= tp2) =
(tp1 <<= ) =
(tp1 ^= tp) =
(tp1 == tp2) =
(tp1 != tp2) =
bitset的函数
既然也是STL的东西,肯定会封装了一下函数,bitset是没有迭代器的。
常用函数有
bit.size(); //返回大小(长度)
bit.count(); //返回1的个数
bit.any(); //返回是否有1
bit.none(); //返回是否没有1
bit.set(); //全部置为1
bit.set(p); //将p+1(下标从0开始!!)位置为1
bit.set(p,n); //将p+1位置为n
bit.reset(); //全部置为0
bit.reset(p); //将p+1位置为0
bit.flip(); //全部取反 等同于 (~bit)
bit.flip(p); //将p+1位取反
bit.to_ulong(); //返回转换为 unsigned long 的结果,超范围会报错
bit.to_ullong();//返回转换为 unsigned long long 的结果,超范围报错
bit.to_string();//返回转换为 string 的结果
当题目涉及到位运算时,就可以使用bitset快速的在整形,string,二进制三种类型中完成操作转换。并且可以在某些数据结构中直接套用bitset完成二进制的对位操作。还有就是bitset很好用。完XD
STL的容器基本讲的差不多了。熟练掌握STL好处我也就不多说了= = ,自己在做题的过程中慢慢琢磨熟练吧。
STL中bitset的用法的更多相关文章
- STL中mem_fun, mem_fun_ref用法
1.引言 先看一个STL中for_each的用法: #include <iostream> #include <vector> #include <algorithm&g ...
- 位运算 进制转化 STL中bitset用法
2017-08-17 16:27:29 writer:pprp /* 题目名称:输入十进制以二进制显示 程序说明:同上 作者:pprp 备注:无 日期:2017/8/17 */ #include &l ...
- STL中map的用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- (转)STL中set的用法
转载自here 1.关于set map容器是键-值对的集合,好比以人名为键的地址和电话号码.相反地,set容器只是单纯的键的集合.例如,某公司可能定义了一个名为bad_checks的set容器,用于记 ...
- STL中的Set用法(详+转)
set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树——红黑树实 ...
- STL中erase()的用法
erase()是STL提供的容器中比较常用的方法之一,它的功能是删除容器中的某些元素,其中它的函数原型如下: 1.有两个参数,且参数类型都是size_t型: string& erase ( s ...
- STL中nth_element的用法
nth_element函数原型有四个,详细我就不一一累赘了,我们就用最普通的用法寻找第k位置的元素. 函数用法为:nth_element(first,kth,end). first,last 第一个和 ...
- stl中双向队列用法
双向队列的操作如下: d[i]:返回d中下标为I的元素的引用. d.front():返回的一个元素的引用. d.back():返回最后一个元素的引用. d.pop_back():删除尾部的元素.不返回 ...
- STL中set的用法
set,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序. 头文件:#include<set> 常用的函数: begin() 返回set容 ...
随机推荐
- (二十八)c#Winform自定义控件-文本框(一)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- 我的第一个CAD程序
[步骤1]新建项目 启动Visual Studio 2010,然后选择一个C#类库,设置好名称和保存位置,点击[确定] [步骤2]添加引用文件AcMgd.dll和AcDbMgd.dll 首次使用时,[ ...
- java读取本机磁盘及遍历磁盘文件
1. 获取本机所有盘符信息 //1. 获取本机盘符 File[] roots = File.listRoots(); for (int i = 0; i < roots.length; i++) ...
- 集合中Iterator迭代器的使用以及实现原理。
collection集合元素通用的获取方式,在取之前先要判断集合中有没有元素,如果有就把这个元素取出来,继续在判断,如果还有就再取出来,一直把集合中的元素全取出来,这种去出方式叫做迭代. 迭代器的作用 ...
- vim 基础配置
最近在使用 python 搞服务, 简单配置了一个 vim, 配置了自动补全以及背景色 .(ps:搜狗输入法快捷键占用真是太坑爹,改用谷歌输入法,世界安静了) 具体配置如下: 一. 安装插件 1.克隆 ...
- 从零写一个编译器(九):语义分析之构造抽象语法树(AST)
项目的完整代码在 C2j-Compiler 前言 在上一篇完成了符号表的构建,下一步就是输出抽象语法树(Abstract Syntax Tree,AST) 抽象语法树(abstract syntax ...
- Sqlserver 游标的写法记录
---游标更新删除当前数据 ---1.声明游标 declare orderNum_03_cursor cursor scroll for select OrderId ,userId from big ...
- Nacos(二):SpringCloud项目中接入Nacos作为注册中心
前言 通过上一篇文章:Nacos介绍简单了解了Nacos的发展历程和现状,本文我们开始Nacos试水的第一步: 使用Nacos做注册中心 上周末(7.6)Nacos发布了V1.1.0版本,这次更新支持 ...
- Hive 系列(六)—— Hive 视图和索引
一.视图 1.1 简介 Hive 中的视图和 RDBMS 中视图的概念一致,都是一组数据的逻辑表示,本质上就是一条 SELECT 语句的结果集.视图是纯粹的逻辑对象,没有关联的存储 (Hive 3.0 ...
- Spring Cloud Stream 核心概念
Spring Cloud Stream简介 Spring cloud stream是一个构建与Spring Boot和Spring Integration之上的框架,方便开发人员快速构建基于Messa ...