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

C++容器之位集(std::bitset)

目录

  • 1 概述
  • 2 使用实例
  • 3 接口使用
    • 3.1 constructor
    • 3.2 count_and_size
    • 3.3 test
    • 3.4 any
    • 3.5 none
    • 3.6 all
    • 3.7 set
    • 3.8 reset
    • 3.9 filp
    • 3.10 to_string
    • 3.11 to_ulong
    • 3.12 to_ullong
    • 3.13 operators

1 概述

  位集存储位(只有两个可能值的元素:0或1,true或false,…)。
  该类模拟bool元素的数组,但针对空间分配进行了优化:通常,每个元素只占用一个位(在大多数系统上,这比最小的元素类型char少八倍)。
  每个比特位置都可以单独访问:例如,对于一个名为foo的给定比特集,表达式foo[3]访问其第四个比特,就像正则数组访问其元素一样。但是,因为在大多数C++环境中,没有元素类型是单个位,所以各个元素都是作为特殊引用类型访问的(请参见bitset::reference)。
  位集具有能够从整数值和二进制字符串构造并转换为它们的特性(请参见其构造函数和成员to_ulong和to_string)。它们也可以直接从二进制格式的流中插入和提取(请参阅适用的运算符)。
  位集的大小在编译时是固定的(由其模板参数决定)。对于一个同时优化空间分配并允许动态调整大小的类,请参阅向量的布尔特化(vector<bool>)。

其类图如下:
在这里插入图片描述

2 使用实例

void BitsetSuite::operators()
{std::bitset<4> a (std::string("1001"));std::bitset<4> b (std::string("0011"));TEST_ASSERT_EQUALS("1010", (a ^= b).to_string())//XOR,assignTEST_ASSERT_EQUALS("0010", (a &= b).to_string())//AND,assignTEST_ASSERT_EQUALS("0011", (a |= b).to_string())//OR,assignTEST_ASSERT_EQUALS("1100", (a <<= 2 ).to_string())//Shitf left,assignTEST_ASSERT_EQUALS("0110", (a >>= 1 ).to_string())//Shitf right,assignTEST_ASSERT_EQUALS("1100", (~b).to_string())//NOTTEST_ASSERT_EQUALS("0110", (b << 1 ).to_string())//Shitf leftTEST_ASSERT_EQUALS("0001", (b >> 1 ).to_string())//Shitf leftTEST_ASSERT_EQUALS(false, (a == b))//(0110==0011)TEST_ASSERT_EQUALS(true, (b != a)) //(0011!=0110)TEST_ASSERT_EQUALS("0101", (a ^ b).to_string())//XORTEST_ASSERT_EQUALS("0010", (a & b).to_string())//ANDTEST_ASSERT_EQUALS("0111", (a | b).to_string
http://www.lryc.cn/news/356428.html

相关文章:

  • 《Ai学习笔记》自然语言处理 (Natural Language Processing):常见机器阅读理解模型(上)02
  • 老师如何在线发布期末考试成绩查询?
  • TensorBoard相关学习
  • 敏感数据处理的艺术:安全高效的数据提取实践与挑战
  • 使用Python操作excel单元格——获取带公式单元格的值
  • PHP开发入门
  • HBase分布式数据库入门到精通
  • Java程序员必备技能之MySQL数据库 图解整理/快速入门
  • 效果炸裂!使用 GPT-4o 快速实现LLM OS
  • 杀死那个进程
  • 【vue与iframe通讯】
  • 【Python-openslide】openslide.open_slide()
  • 推荐系统学习笔记(三)
  • 521源码-免费游戏源码下载-闯梦江湖Q萌复古全网通手游服务端H5全攻略
  • 【Zotero】【MacOS】Zotero6常用插件总结
  • 具有固定宽度的盒子:\makebox, \parbox
  • 中央网信办等四部门发布《互联网政务应用安全管理规定》
  • 国产性能怪兽——香橙派AI Pro(8T)上手体验报告以及性能评测
  • 适用于 Windows 7/8/10/11 的 6 款最佳免费分区软件
  • 蓝桥杯备赛——DP续【python】
  • 区块链系统开发测试----链码部署开发、系统开发验证
  • ResNet 学习
  • 前端React老项目打包caniuse-lite报错解决思路
  • 【全开源】优校管理系统支持微信小程序+微信公众号+H5
  • Python条件分支与循环
  • AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica
  • 四川景源畅信:新人做抖店的成本很高吗?
  • ChatGPT原创指令大全(持续更新)
  • Java实现对PDF、纵向、横向页面添加自定义水印功能
  • 设计模式15——享元模式