bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit。

bitset 的大小在定义使就需要确定。如果想要不定长的 bitset,就需要使用 vector。

bitset 的定义:

bitset<16> bt;  // 定义大小为16的bitset,每一位都是0
bitset<16> bt(string("11001")); // 定义大小为16的bitset,并用string初始化,注意高位为0,也就是 0000000000011001

bitset 可以直接使用 cin 和 cout 输入输出

bitset<16> bt;
cin >> bt;
cout << bt << endl;

bitset 可以像数组一样访问或修改某一位置的元素,注意0表示低位。

bitset<8> bt;
bt[0] = 1; // 00000001

bitset 也可以像一个数一样进行位运算:与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)。

常用函数:

bitset<8> bt;
bt.size(); // 返回大小
bt.count(); // 返回1的个数
bt.set(); // 全部置1
bt.set(pos); // pos位置1
bt.reset(); // 全部置0
bt.reset(pos); // pos位置0
bt.flip(); // 全部取反
bt.flip(pos); // pos位取反

C++ bitset的简单使用的更多相关文章

  1. C++标准库bitset类型(简单使用方法)

    转自此人博客 ```cpp #include<bister> using std::bitset; ``` 一句话定义:可自定义位数,用作记录二进制的数据类型. 一,定义和初始化 ```c ...

  2. 算法复习——bitset(bzoj3687简单题)

    题目: Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.    目前 ...

  3. bitset的简单用法

    1.头文件 #include<bitset> 2.基本操作 bitset<n> b; b有n位,每位都为0. 参数n可以为一个表达式.如bitset<5> b, 则 ...

  4. BitSet 的使用

    BitSet 的简单介绍 BitSet,即位图,是位操作的对象,值只有 0 或 1(即 false 或 true). Java 的 BitSet 内部维护着一个 long 数组,默认初始化时数组的长度 ...

  5. 【学习笔记】使用 bitset 求解较高维偏序问题

    求解五维偏序 给定 \(n(\le 3\times 10^4)\) 个五元组,对于每个五元组 \((a_i, b_i, c_i, d_i, e_i)\),求存在多少个 \(1\le j\le n\) ...

  6. NOIp2016 十连测 round1

    Claris大爷出的一套模拟题.问别人要到了一份题,加深了自己NOIp要滚粗的感觉. Matser zzDP题,我只能说我第一遍写的时候还写崩了QAQ. //master //by Cydiater ...

  7. 实战ELK(9) Elasticsearch地理位置

    地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点.地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中.地理坐标点不能被动态映射(dynamic mappi ...

  8. Elasticsearch地理位置总结

    更多内容请参考 : https://www.felayman.com 翻译版本:https://es.xiaoleilu.com/310_Geopoints/00_Intro.html 官方原文:ht ...

  9. JavaBitSet学习

    一.背景 之前公司项目需要对会员人群进行去重过滤,人群的维度是user_id: 因此采用了BitSet做简单的去重,方案将user_id作为bitset中的bit索引: 通过and\or\xor基础运 ...

  10. Elastic Search中filter的理解

    在ES中,请求一旦发起,ES服务器是按照请求参数的顺序依次执行具体的搜索过滤逻辑的.如何定制请求体中的搜索过滤条件顺序,是一个经验活.类似query(指search中的query请求参数),也是搜索的 ...

随机推荐

  1. 七天.NET 8操作SQLite入门到实战 - 第五天引入SQLite-net ORM并封装常用方法(SQLiteHelper)

    前言 上一章节我们搭建好了EasySQLite的前后端框架,今天我们的主要任务是在后端框架中引入SQLite-net ORM并封装常用方法(SQLiteHelper). 七天.NET 8操作SQLit ...

  2. Java并发(十六)----线程八锁

    所谓的"线程八锁" 其实就是看 synchronized 锁住的是哪个对象 情况1:12 或 21都是有可能的,就看cpu先调度哪个线程 @Slf4j(topic = " ...

  3. Gson和fastJson应用场景

      如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean 二.Google的Gson包的使用简介. Gson类:解析json的最基础的工 ...

  4. 无序对的GCD

    求\(\sum_{i = 1}^n \sum_{j = i+1}^n GCD(a_i, a_j)\) \(N\)为上确界,\(n\)为\(a\)数组元素个数,\(D\)为约数个数. 方法一 \(1.\ ...

  5. 设备唯一标识方法(Unique Identifier):如何在 Windows 系统上获取设备的唯一标识

    原文地址 设备唯一标识方法(Unique Identifier):如何在 Windows 系统上获取设备的唯一标识 zz 唯一的标识一个设备是一个基本功能,可以拥有很多应用场景,比如软件授权(如何保证 ...

  6. 【matlab混沌理论】1.5.洛伦兹模型的分析

    洛伦兹方程用于生成y变量的图.这是对三种y初始条件敏感依赖的一个例子. 1.洛伦兹吸引子的y敏感依赖的着色图 input: % 洛伦兹方程用于生成y变量的图.x和z的初始条件保持不变,但y的初始条件在 ...

  7. 切换容器引擎为containerd

    确保模块载入: # 永久生效 cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter E ...

  8. bash shell笔记整理——basename和dirname命令

    bashname命令作用 去掉给定name的目录部分,如果指定了 SUFFIX, 就 同时去掉SUFFIX(后缀).具体看示例吧. bashname语法 Usage: basename NAME [S ...

  9. 2023.3 Idea配置Tomcat环境

    tomcat配置 下载tomcat 先到官网(按住Ctrl再左键点击直接打开官网)下载64位的tomcat,网速慢就用魔法下 创建项目.模块 打开idea(我用的是最新的idea的专业版,ui有点变化 ...

  10. Ubuntu系统部署后优化

    Ubuntu系统配置调整 前期准备 #更改主机名,重启后不变 hostnamectl set-hostname Zabbix-Server01 #更改主机名,重启后变回从前 hostname Zabb ...