前言


之前一些需要转二进制来解决的题目我看到很多大佬用了bitset。

然而我并不会这东西。看上去很高级的样子……

改题改累了来学习一下233。

正文


一、bitset的构造

bitset有三种构造方式:string构造、整数构造和无参构造(自己瞎yy的名字)

1.无参构造:默认每一位为0。

具体代码实现:

bitset <> a;

构造结果:0000000000

2.string构造:与char数组构造大致相同。也是附上一个01串作为bitset构造的参量传入。

具体代码实现:

string str="";
bitset <> b(str);

构造结果:0000010110

3.整数构造:传入一个整数,bitset会自动转化成二进制数保存。

具体代码实现:

bitset <> c();

构造结果:0000001100

二、bitset的基本运算

bitset支持所有的位运算。在这里不一一进行演示。举一个异或的例子:

具体代码实现:

bitset <> a(string(""));
bitset <> b(string(""));
cout<<(a^b)<<endl;

输出结果:00000000000000000001

三、bitset的访问和赋值

1.bitset可以通过"[""]"来访问每一位的值。

具体代码实现:

bitset <> a("");
cout<<a[]<< endl;//输出

通过这一方法也可以对某一个位置进行赋值。

2.通过bitset自带函数test进行访问(据说和上面的访问方式比可以避免访问越界问题)

具体代码实现:

bitset <> a("");
cout<<a.test()<<endl;

3.通过bitset自带函数set、reset进行赋值

set无参时将所有位全部置成1,reset相反。参数为位置。加入参数会将对应的位置+1置成0/1。

另外,当set函数指定两位参数时,意义为将第一参数位+1的元素置为第二参数的值。

具体代码实现:

bitset <> a;
a.set(); //
a.reset(); //
a.set(); //
a.set(); //
a.reset(); //
a.set(,); //

并没有实测不过大概是这样吧……(逃

四、其他基本函数

count():返回1的个数

any():返回是否有1

none():返回是否没有1

flip():全部取反

flip(p):将第p+1位取反

to_ulong():返回它转换为unsigned int的结果,如果超出范围则报错

to_ullong():返回它转换为unsigned long long的结果,如果超出范围则报错

to_string():返回它转换为string的结果

「STL」bitset正传的更多相关文章

  1. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

  2. 一个只需要点 「下一步」就完成监控 Windows

    Cloud Insight 此前已然支持 Linux 操作系统,支持20多中数据库中间件等组件,多种操作,多种搭配,服务器监控玩的其乐无穷啊!但想想还有许多 Windows 的小伙伴没有体验过,所以在 ...

  3. LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)

    题意 给你一颗 \(n\) 个点的树,每个点的度数不超过 \(20\) ,有 \(q\) 次修改点权的操作. 需要动态维护带权重心,也就是找到一个点 \(v\) 使得 \(\displaystyle ...

  4. LOJ #6436. 「PKUSC2018」神仙的游戏(字符串+NTT)

    题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 ...

  5. LOJ #2135. 「ZJOI2015」幻想乡战略游戏

    #2135. 「ZJOI2015」幻想乡战略游戏 链接 分析: 动态点分治,求加权重心,带修改. 考虑如果知道了一个点s,如何求答案,那么首先可以点分治的思想,求每个联通块内所有点到分治中心距离和,然 ...

  6. tyvj P2018 「Nescafé26」小猫爬山 解题报告

    P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经 ...

  7. 「BZOJ4763」雪辉

    「BZOJ4763」天野雪辉 题目大意:有一棵 \(n\) 个点的树,树上每一个点有权值 \(a_i \leq 30000\) ,每次询问给出若干路径,求出这些路径的并上面的不同颜色数与 \(mex\ ...

  8. 「CSA49」Card Collecting Game

    「CSA49」Card Collecting Game 题目大意:有 \(n\) 种卡片,每种有 \(b_i\) 张,如果一个人集齐 \(k\) 张第 \(i\) 种卡片,那么其能获得的得分是 \(\ ...

  9. loj #6201. 「YNOI2016」掉进兔子洞

    #6201. 「YNOI2016」掉进兔子洞 您正在打galgame,然后突然发现您今天太颓了,于是想写个数据结构题练练手: 给出一个长为 nnn 的序列 aaa. 有 mmm 个询问,每次询问三个区 ...

随机推荐

  1. 笔记33 Spring MVC的高级技术——Spring MVC配置的替代方案

    一.自定义DispatcherServlet配置  AbstractAnnotationConfigDispatcherServletInitializer所完成 的事情其实比看上去要多.在Spitt ...

  2. PHP算法之罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 ...

  3. Java 的信号灯

    Semaphore可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数. Semaphore实现的功能就类似厕所有 ...

  4. h5 input无法输入问题 屏蔽长按事件

    开发h5 app中突然发现在手机上长按文本会出现复制粘贴菜单,只要是文本长按都会出现这种情况确实有些不太符合交互,为此特意去翻了一下博客,得到了已下解决方案: 将所有元素的系统默认菜单禁用掉 *{ - ...

  5. toLocaleString 日期

    new Date().toLocaleString()"2018/5/3 下午3:08:48"

  6. Java KMP算法代码

    1. KMP 算法(字符串匹配算法)较 BF(朴素的字符串匹配)算法有哪些改进 1) 在主串和子串匹配的过程中,主串不再回退,只改变子串的比较位置. 2) 为子串生成对应的next数组,每次匹配失败, ...

  7. 每天进步一点点-WPF-根据数据类型加载控件

    目的,根据数据类型的不同,动态的加载适用于不同数据类型的控件(布局) 原理:为自定义的数据类型添加数据魔板,绑定的时候绑定这些数据类型的实例. 例子: 数据类型: 数据模板: <DataTemp ...

  8. js基础用法 ,基础语法

    js用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...

  9. NX二次开发-UFUN获取边的光顺性UF_MODL_ask_edge_smoothness(找相切面)

    #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize(); //获取面的所有 ...

  10. HDU1556-Color the ball-前缀和/线段树/树状数组

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但 ...