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

位集合(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/



 

相关文章:

  • 论文略读: STREAMLINING REDUNDANT LAYERS TO COMPRESS LARGE LANGUAGE MODELS
  • 霹雳吧啦Wz_深度学习-图像分类篇章_1.1 卷积神经网络基础_笔记
  • Ubuntu 和 Linux 命令行是高度通用的
  • MySql(六)
  • 【大模型02】Deepseek使用和prompt工程
  • Python 基于卷积神经网络手写数字识别
  • 基于ELK的分布式日志实时分析与可视化系统设计
  • PHP序列化和反序列化
  • 分布式数据库备份实践
  • word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)
  • python中使用高并发分布式队列库celery的那些坑
  • 基于Web的分布式图集管理系统架构设计与实践
  • ICASSP2025丨融合语音停顿信息与语言模型的阿尔兹海默病检测
  • 分布式不同数据的一致性模型
  • 从零实现基于BERT的中文文本情感分析的任务
  • 分布式CAP理论
  • 【STIP】安全Transformer推理协议
  • 云原生时代 Kafka 深度实践:02快速上手与环境搭建
  • pcie gen3 phy tx
  • t009-线上代驾管理系统
  • 网站代建设费用/品牌运营推广方案
  • 网站交换链接怎么做?/市场宣传推广方案
  • 安阳专业做网站公司/免费网络推广100种方法
  • 党政网站建设/孝感seo
  • 做网站啦代理的方法/如何发布视频赚钱
  • html5 网站logo/怎么制作自己的个人网站