STL的位图:bitset

server/2024/10/20 5:47:04/

引言

在C++标准模板库(STL)中,bitset是一种用于表示固定大小序列的位集合的容器。每个位(bit)可以被独立地设置或清除,即它可以单独地表示0或1。bitset在处理二进制数据时非常有用,尤其是在需要节省空间或者进行位操作时。

可以看到模板参数采用的是非类型模板参数,其大小一开始就确定好了。头文件再bitset中

以下是bitset的一些基本特性:

基本特性

  1. 固定大小:bitset的大小在编译时确定,不能动态改变。
  2. 高效存储:bitset以一个固定大小的unsigned long类型数组的形式存储位,这样可以节省内存空间。
  3. 易于操作:bitset提供了简单的接口来设置、清除、翻转和查询位的状态。
  4. 位运算:支持位与(&)、位或(|)、位异或(^)、位取反(~)等位运算。

接口函数

这是bitset的核心接口       

重点是set reset test

set:将某一位set为1

reset:设置为0

test:检查是否为1

剩余的接口

分别对应

解引用

统计有几位被set

返回大小(开局就被设置好)

是否存在1

是否都不是1

是否都是1

flip:将某一位反转

 

注意事项

  • bitset的大小必须在编译时已知,因此不能使用变量来定义bitset的大小。
  • bitset的大小最大为std::bitset<N>::npos,通常这个值是unsigned long能表示的最大值。

用途:

1.bitset在处理位数较少的位操作时非常有用,它简化了代码并提高了效率。

2.用于大量整型家族数据的查找操作。


http://www.ppmy.cn/server/128591.html

相关文章

Docker 实践与应用举例

一、容器化Web应用&#xff1a; 创建一个Docker容器来运行一个简单的Web应用&#xff0c;例如一个基于Node.js的Express应用。首先&#xff0c;编写Dockerfile来定义容器的构建过程&#xff0c;然后使用Docker命令来构建和运行容器。 使用Docker Compose来定义和管理多个容器组…

使用Three.js库创建的简单WebGL应用程序,主要用于展示具有不同透明度和缩放比例的圆环列

上述HTML文档是一个使用Three.js库创建的简单WebGL应用程序&#xff0c;主要用于展示具有不同透明度和缩放比例的圆环列。以下是代码的详细解释&#xff1a; HTML结构: 文档类型声明为HTML5。<html>标签设置了语言属性为英语&#xff08;lang"en"&#xff09;…

告别音乐小白!字节跳动AI音乐创作工具,让你一键变作曲家!

还在羡慕别人能创作动听的音乐&#xff1f;五音不全的你&#xff0c;也梦想着谱写属于自己的乐章&#xff1f;现在&#xff0c;机会来了&#xff01;字节跳动推出了一款AI音乐创作工具——抖音推出的海绵音乐&#xff0c;它能让你轻松一键创作音乐&#xff0c;即使是“音乐小白…

Spring MVC 常用注解

目录 基础概念 常用注解介绍 基础概念 1、MVC &#xff1a;代表一种软件架构设计思想&#xff0c;通俗的理解&#xff1a;客户端发送请求到后台服务器的Controller(C)&#xff0c;控制器调用Model(M)来处理业务逻辑&#xff0c;处理完成后&#xff0c;返回处理后的数据到Vie…

用户在网页上输入一个网址,它整个页面响应的流程是什么?

目录 一、流程的大致过程 二、流程的详细分析 1. 浏览器先分析超链接中的URL 2. DNS解析 3. 建立TCP连接 建立连接&#xff08;三次握手&#xff09; HTTP中的请求报文 4. 浏览器发送HTTP请求 5. 服务器处理请求并发送响应 HTTP的响应报文 6. 浏览器接收响应 7. 渲…

讯飞星火编排创建智能体学习(五):变量和文本拼接

引言 在讯飞星火编排创建智能体学习&#xff08;四&#xff09;&#xff1a;网页读取-CSDN博客中&#xff0c;我介绍了如何用网页读取功能从网上搜索车次信息。其中&#xff0c;我使用用大模型节点从文本中提取车次并合成了所需要的URL&#xff0c;今天介绍一下如何用变量和文…

Flask-2

文章目录 请求全局钩子[hook]异常抛出和捕获异常abort 主动抛出HTTP异常errorhandler 捕获错误 context请求上下文(request context)应用上下文(application context)current_appg变量 两者区别&#xff1a; 终端脚本命令flask1.0的终端命令使用自定义终端命令 flask2.0的终端命…

什么是 Apache Ingress

Apache Ingress 主要用于管理来自外部的 HTTP 和 HTTPS 流量&#xff0c;并将其路由到合适的 Kubernetes 服务。 容器化与 Kubernetes 是现代云原生应用程序的基础。Kubernetes 的主要职责是管理容器集群&#xff0c;确保它们的高可用性和可扩展性&#xff0c;同时还提供自动化…