当前位置: 首页 > web >正文

位集合(STL bitset)简介

【bitset 官方网址】
https://cplusplus.com/reference/bitset/bitset/
位集合(Bit Set)是一种高效存储和操作布尔值(true/false)或二进制位(0/1)的数据结构,主要用于处理大规模整数集合或状态标志。


【bitset 各函数用法简介】
● 初始化 → 
https://cplusplus.com/reference/bitset/bitset/operator[]/

#include <bits/stdc++.h>
using namespace std;int main () {bitset<5> foo;    //00000foo[1]=1;         //00010foo[2]=foo[1];    //00110cout<<foo<<endl;  //00110return 0;
}

● std::bitset::count → https://cplusplus.com/reference/bitset/bitset/count/
count() 函数统计 01 串中 1 的个数。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<8> foo(string("10110011"));cout<<foo<<"\n";cout<<foo.count()<<" ones.\n";cout<<(foo.size()-foo.count())<<" zeros.\n";return 0;
}/*
10110011
5 ones.
3 zeros.
*/

● std::bitset::size → https://cplusplus.com/reference/bitset/bitset/size/
size() 函数返回 01 串的长度。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<8> foo;bitset<4> bar;cout<<foo.size()<<'\n'; //8cout<<bar.size()<<'\n'; //4return 0;
}

​​​​​​​●​​​​​​​ std::bitset::test → https://cplusplus.com/reference/bitset/bitset/test/
cout<<boolalpha; 是 C++ 中的一条语句,用于设置 cout 的输出格式,使其在输出布尔值时显示为 true 或 false(而不是默认的 1 或 0)。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<5> foo(string("01011"));cout<<boolalpha; //emphasisfor(int i=0; i<foo.size(); i++) {cout<<foo.test(i)<<'\n';}return 0;
}/*
true
true
false
true
false
*/

● std::bitset::set → https://cplusplus.com/reference/bitset/bitset/set/
利用 set() 将所有位的值设为 1。
利用 set(x) 将第 x 位的值设为 1。(
从右往左计位,最右边的位序为 0
利用 set(x,0) 将第 x 位的值设为 0。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<5> foo;cout<<foo.set()<<'\n';       //11111cout<<foo.set(2,0)<<'\n';    //11011cout<<foo.set(2)<<'\n';      //11111return 0;
}

● std::bitset::reset → https://cplusplus.com/reference/bitset/bitset/reset/
利用 reset(x) 将第 x 位的值设为 0。从右往左计位,最右边的位序为 0
利用 reset() 将所有位的值设为 0。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<5> foo(string("10111"));cout<<foo.reset(2)<<'\n';  //10011cout<<foo.reset()<<'\n';   //00000return 0;
}

● std::bitset::flip → https://cplusplus.com/reference/bitset/bitset/flip/
flip() 函数将 0 置为 1,将 1 置为 0。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<5> foo(string("10001"));cout<<foo.flip(2)<<'\n';   //10101cout<<foo.flip()<<'\n';    //01010return 0;
}

● std::bitset::all → https://cplusplus.com/reference/bitset/bitset/all/
all:01 串中各位都是 1;
any:01 串中至少有一位是 1;
none:01 串中没有 1。

#include <bits/stdc++.h>
using namespace std;int main () {bitset<8> foo;cin>>foo; //11111111cout<<boolalpha;cout<<"all: "<<foo.all()<<'\n'; //truecout<<"any: "<<foo.any()<<'\n'; //truecout<<"none: "<<foo.none()<<'\n'; //falsereturn 0;
}




【参考文献】
https://cplusplus.com/reference/bitset/bitset/



 

http://www.xdnf.cn/news/9759.html

相关文章:

  • Starrocks 物化视图的实现以及在刷新期间能否读数据
  • 分布式不同数据的一致性模型
  • Java开发经验——阿里巴巴编码规范实践解析8
  • RK3568DAYU开发板-平台驱动开发--UART
  • 传输层协议TCP(上)
  • 【Linux】线程概念
  • 时序数据库IoTDB基于云原生的创新与实践
  • 20250529
  • Linux 开发工具
  • 第6讲、 Odoo 18 `tools` 模块深度分析
  • leetcode450.删除二叉搜索树中的节点:递归法利用有序性处理四种删除场景
  • 动态规划法在解决实际问题中的应用
  • RPG改进1.轻击与重击的搭配与连续释放
  • Java设计模式之中介者模式详解
  • 【科研绘图系列】R语言绘制森林图(forest plot)
  • json中对象转字符串和字符串转对象的方法
  • RISC-V PMA、PMP机制深入分析
  • Java -- 并发编程
  • 【图像处理基石】立体匹配的经典算法有哪些?
  • CTA-861-G-2017中文pdf版
  • Java面试实战:从Spring Boot到微服务与AI的全栈挑战
  • 无人机报警器探测模块技术解析!
  • 如何打造一份出色的技术文档?
  • YOLOv8 实战指南:如何实现视频区域内的目标统计与计数
  • 软考-系统架构设计师-第十五章 信息系统架构设计理论与实践
  • 互联网大厂Java求职面试:AI大模型融合下的企业知识库架构设计与性能优化
  • 重温经典算法——插入排序
  • Python进阶【四】:XML和JSON文件处理
  • vue3 导出excel
  • MySQL高可用方案:Keepalived+双主库架构深度解析与实战指南