首页 > 其他分享 >bitset 学习笔记

bitset 学习笔记

时间:2024-08-08 20:32:20浏览次数:7  
标签:frac 复杂度 笔记 学习 bool bitset 数组 赋值

bitset 有点厉害,必须要学了。

介绍

bitset 可以看成是一个每个位置都是 \(0\) 或 \(1\) 的 bool 数组。与 bool 数组相比,它的空间复杂度是其 \(\frac{1}{32}\),时间复杂度也是 \(\frac{1}{32}\),还支持位运算,所以不论是用处还是效率基本薄纱了 bool 数组。

可以作为卡常、压位操作、记录状态时使用。

1. 使用方法

std::bitset<N> a; //开一个长度为 N 的一维 bitset
a |= (1 << i); //可以单独作为一个数进行位运算
if(a[i]) //也可以作为数组直接访问下标

2 内置函数

复杂度 \(O(1)\) 的函数:

a.set():全部赋值为 \(1\)。

a.set(x):把指定第 \(x\) 位赋值为 \(1\)。

a.reset():全部赋值为 \(1\)。

a.reset(x):把指定第 \(x\) 位赋值为 \(0\)。

a.flip():全部位置取反。

a.flip(x):把指定第 \(x\) 位取反。

复杂度 \(O(\frac{n}{w})\) 的函数:

a.any() 判断数组中是否有 \(1\)。

a.count() 数组中 \(1\) 的个数。

a._Find_first():查找从下标 \(0\) 开始第一个 \(1\) 出现的位置,如果没有返回数组大小。

a._Find_next(x):查找从下标 \(x+1\) 开始第一个 \(1\) 出现的位置,如果没有返回数组大小。

习题

不想写...

标签:frac,复杂度,笔记,学习,bool,bitset,数组,赋值
From: https://www.cnblogs.com/FireRaku/p/18349640

相关文章

  • 鹏哥C语言自定义笔记重点
    1.浮点数在内存中不能精确保存。2.sizeof这个操作符计算返回的结果是size_t类型的,是无符号整数型的,当遇见负数会被认为是非常大的数。3.strcpy在拷贝字符串时,会把源字符串中的\0也拷贝过去。assert是断言,可以防止NULL,需要头文件#include<assert.h>。const修饰指针变量放在*......
  • 小白学习微信小程序的跨页面通信和数据传递
    跨页面通信和数据传递在微信小程序开发中非常重要,它们可以帮助不同页面之间共享数据并实现页面间的交互。本文将详细介绍微信小程序中的跨页面通信和数据传递的相关知识,并提供代码案例进行说明。小程序中跨页面通信的方式主要包括:使用全局变量使用事件总线使用页面栈数据传......
  • 大语言模型学习笔记
    基础知识简介一、大语言模型(LLM)的概念LLM定义与特点:处理海量文本,多者可具备数百亿参数,理解语言深度,展现涌现能力。LLM国内外代表:i.国外有GPT系列、LLaMA等ii.国内有文心一言、通义千问等。模型大小与性能能关系:与小模型构架相似,但参数量级提升带来解决复杂任务的显著优......
  • Objective-C学习笔记(Block用法)
    Blocks(块)block以插入字符(^)为标识。可以作为函数参数,返回值,或直接调用返回类型(^block命名)(参数类型1,参数类型2)NSString*(^stringBlock)(int,int)=^NSString*(inta,intb){return[NSStringstringWithFormat:@"%d%d",a,b];};当使用block作为函数的参......
  • 学习 Python 语言,它能干什么?
    学习Python语言,它能干什么?为什么要学习编程语言?随着大数据,人工智能盒区块链技术的不断发展和应用,很多领域的创新需要借助一些前沿技术,而软件创建由需要借助编程语言,编程语言是创新与产品之间的桥桥梁,所以创新与编程语言是相辅相成的,人们借助编程语言完成产品的落地。为什......
  • 第二十天的学习(2024.8.8)Vue拓展
    昨天的笔记中,我们进行的项目已经可以在网页上显示查询到数据库中的数据,今天的笔记中将会完成在网页上进行增删改查的操作 1.删除表中数据现在网页上只能呈现出数据库中的数据,我们首先添加一个删除按钮,使其可以对数据库数据进行删除操作<template#default="scope"><e......
  • Colder框架试用笔记
    我于2024.07.29新入职了一家公司,在开始的第一个星期里,试用了公司项目用的Colder框架(看作者叫寒剑飞空)。过程1.建表,代码生成,菜单配置,权限配置(改配置文件,用角色权限管理,代码修改)。2.弄了一些控件:下拉,导出,上传图片,导入,单选,文本框,列表排序。3.弄了一个统计报表。4.整个的浏览了......
  • freertos学习(九)软件定时器
    软件定时器软件定时器是freeRTOS通过一个硬件定时器,实现的定时器。可以实现不同时长的多个定时任务不从中断上下文中执行定时器回调函数(不消耗任何处理时间)实现流程设置软件定时器,推入定时器命令队列开始计时计时到,启用回调函数如不是循环模式,则该定时器停止运行注......
  • 万字长文带你深度学习AI绘画工具 Stable Diffusion 保姆级实战,AI绘画入门必看实用性教
    大家好,我是设计师阿威今天给大家分享一下AI绘画工具StableDiffusion的实战教程,非常适合新手入门和巩固以往知识体系,同时我也准备了配套的学习资料,本教程没有难懂的理论,全是实操的截图,非常通俗易懂。本教程没有难懂的理论,全是实操的截图,非常通俗易懂。认真看完这篇教程,能......
  • 集合的学习
    集合Collection,也是一个数据容器,类似于数组,但是和数组是不一样的。集合是一个可变的容器,可以随时向集合中添加元素,也可以随时从集合中删除元素。另外,集合还提供了若干个用来操作集合中数据的方法。集合里的数据,我们称之为元素(elements);集合只能用来存储引用类型的数据,不能存......