三 序列式容器(六)Bitset

STL标准库中的bitset原理解析 STL标准库中的bitset原理解析bitset简介  bitset,中文叫位图,类似于每一个元素都是0或者1的数组,但位图的空间利用率比数组高很多。在Linux系统中,位图广泛应用于进程id的分配和文件描述符(file describer)的分配。并且,位图可以用于排序。位图的基本原理是用一个bit位代表一个整数,如果位图中的第N为1,那么就表示整数N存在。  在c++的STL中实现了位图,包含在 阅读详情

一 Bitset概述:

(1)bitset是一个内含位(bit)或布尔(boolean)值且大小固定的array。

class bitset定义于头文件<bitset>之中,class bitset是个template class,有一个template参数,用来指定位的数量:

namespace std

{

template<size_t Bits>

class bitset;

}

例如:bitset<50>set;//产生一个50个位的set。


(2)一个强有力的特性为:可以在整数值和位序列之间相互转化。

例如:

cout<<bitset<50>(100)<<endl;将输出50个位序,其值为100。

cout<<bitset<50>(string("110")).to_ulong()<<endl;//将输出6


(3)不可以改变bitset内位的数量,这个数量的具体指由template参数决定。如果需要一个可变长度的位容器,可考虑使用vector<bool>。


(4)bitset相关的操作函数:


二 vector<bool>(可变长度的位容器)

C++标准程序库专门针对bool类型的vector设计了一个特殊版本。其耗费空间远远小于一般vector实作出来的bool vector。一般的vector的实作版会为每个元素至少分配一个byte空间,而vector<bool>特殊版本内部只用一个bit来存储元素。


vector具有如下特殊操作:



C++ STL核心机制解析:容器选型、迭代器失效与算法优化实战 泛型编程是C++标准库的核心设计思想,它通过模板技术实现了数据结构和算法的分离。其基本原理是使用迭代器作为统一接口,让算法可以独立于具体容器工作,从而极大提升了代码的复用性和灵活性。这一设计的技术价值在于,开发者无需重复实现基础数据结构,能专注于业务逻辑,同时保证了类型安全和运行效率。在实际应用场景中,无论是游戏引擎、高频交易系统还是嵌入式开发,合理运用STL都能显著提升开发效率和程序性能。其中,容器选型决策直接影响内存布局和操作时间复杂度,而迭代器失效问题则是导致程序崩溃的常见陷阱。掌握vector、ma 阅读详情

相关推荐

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照

C#中的Chart控件——当数据源很多时可以显示进度条拉动观察,也可以记录到后台文本详细对照下面进行详细步骤说明,感兴趣的同学可以看一下: 1简单示例(一条线): 2.数据源随着时间不断变化,进度条变化 。多条线: 3.看在整段时期内的数据大体图(消去或出现)进度条: 4.后台将时刻记录变化记录到一个txt文本里以供详细校验: 话不多说上码: using System; using Sys...

帅boy的博客 4308

bitset中_Find_first()与_Find_next()函数

bitset中_Find_first()与_Find_next()函数 很有趣但是没怎么有用的两个函数。 _Find_fisrt就是找到从低位到高位第一个1的位置 #include<bits/stdc++.h> int main() { std::bitset<1001> B; B.set(2); B.set(4); B.set(233); std:...

weixin_30415113的博客 1729

STM32H743 ADC多通道采样实战:CubeMX配置+DMA传输避坑指南

本文详细介绍了STM32H743 ADC多通道采样的实战配置,包括CubeMX参数设置、DMA传输优化及常见问题解决方案。重点解析了ADC模块的核心特性、多通道采样序列配置、Cache一致性处理等关键技术,帮助开发者高效实现稳定可靠的模拟信号采集系统。

weixin_29175469的博客 611

C++STL bitset介绍与使用方法

bitsetbitset主要是用于存储二进制位,在需要大量二进制计算的项目中,直接使用bitset比利用数组或者其它方式要更为方便,位运算在存储状态、模拟行动、搜索很多方面有非常巨大的优势头文件:#include 构造函数bitset<16> first; //构造一个16位的bitset对象,初始值默认为0 bitset<16> second(177); //构造一个16位的bitset对象,

Cypress的博客 1766

OJ(while+cin.get()判断结束)

今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。 描述 给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。 输入 包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。 输出 输出N行。...

Stark_JC的博客 2357

QT下利用FFTW实现功率谱密度分析(周期图法)

写在前面 出于项目需求,需要在QT的msvc 2015编译环境下实现功率谱密度估计。 所以这个需求很直接的关键词就是 1. C++ 2. QT 3. 傅里叶变换 4. 功率谱密度估计 但是在网上搜索了很久,没有一个非常直接的答案。所以我觉得很有必要写一篇文章来说明,在QT msvc2015 32bit环境下如何实现功率谱密度估计。 本文并没有经过严格编辑,但代码是已经可以跑通的,如...

李时珍食疗志的博客 5223

STL容器 —— bitset

位图算法,位图的模拟实现,位图的应用:常见面试题-> 海量数据的处理方法。

lyzzs222的博客 1351

基于STM32L4XX、HAL库的GC9307 TFT 液晶驱动IC驱动程序设计

GC9307是一款常用的TFT液晶驱动IC,支持240x320分辨率的RGB接口显示屏。(Master Out Slave In): 连接到STM32L4的SPI数据输出引脚(如PA7)(Serial Clock): 连接到STM32L4的SPI时钟引脚(如PA5)(Data/Command): 连接到STM32L4的GPIO引脚(如PA3)(Chip Select): 连接到STM32L4的GPIO引脚(如PA4)(Reset): 连接到STM32L4的GPIO引脚(如PA2): 分别连接到电源和地。

zhusl6688的博客 1033

Gym - 101492C-Coprimes bitset和_Find_first的应用

Gym - 101492CC - CoprimesA. Tuttu (a distant relative of W. Tutte) is a young mathematician with a promising future. As a child, he was very lonely, since he had no siblings nor cousins. One of his ea...

dhydye的博客 735

Claude Code 官方文档+3 个高活跃社区+5 个可复用开源项目:14.4 节持续学习资源实测清单

揭示 Claude Code 的核心交互范式是「状态机驱动的对话式编程」,强调官方文档实为配置契约、社区是直觉验证场、开源项目是配置能力校准器;通过真实故障案例解析上下文丢失根源,提出以工程化方式管理 claude.config.json、CLAUDE.md 和技能配置。

weixin_28728443的博客 326

爆破shadow文件密码脚本(完成版)

由于添加了一个for循环,再稍作修改,让password not found!print(f"Trying password:")显示爆破的密码和过程。将代码中的password="123456"替换成下面代码。line.strip()函数首尾去空格。

m0_56578216的博客 771

hdu 6430 bitset _Find_first

Problem E. TeaTree Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 968 Accepted Submission(s): 367 Problem Description Recently, TeaTr...

zstu_zy的博客 776

RK3588开发笔记-MIPI-CSI接口视频解码芯片XS9922B调试

Rockchip RK3588 是一款高性能的处理器,支持多种摄像头接口,包括 MIPI(Mobile Industry Processor Interface)接口。MIPI是一种用于移动设备和嵌入式系统中的摄像头、显示器和其他传感器设备的串行接口标准。MIPI是MIPI联盟发起的为移动应用处理器制定的开放标准。CSI-2(Camera Serial Interface 2)是MIPI 联盟定义的另一种高速接口,主要用于摄像模组和处理器之间的连接。

flypig has a dream! 6861

C++ STL容器:序列式容器-数组string,vector,array,bitset

CC++ STL(Standard Template Library,标准模板库)在C++编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C++程序的开发效率和代码质量。STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。本文介绍的是序列式容器-数组string,vector,array,bitset。

weixin_45068267的博客 1088

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

STL复习-序列式容器和容器适配器部分

STL复习

bananawolf的博客 3477

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

三、容器

1、容器的概念1.容器成员和函数容器成员的条件: - 元素必须是可复制的,所有容器产生一份元素副本,容器操作返回的也是副本,因此复制构造函数执行非常频繁 - 元素必须是可指派(assign)的,所有元素都可使用assign()设定值 - 元素必须是可以释放的容器函数的能力: - 容器均能提供value,而非引用 - 所有元素自动形成顺序 - 函数使用者必须确保传递参数符合要求2.容器的种

jingza的博客 249

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ STL概念之 序列式容器4(bitset / array / forward_list / deque)

用于序列中的一位或所有位设置为1。这个版本将位序列中的所有位都设为1。这个版本能够设置位序列中的指定位。参数pos为我们想要设置的位的位置,参数val是设定的值,如果不提供val参数,默认将位设置为1。如果提供了val参数并且其值为false,则将指定位设为0。

qq_65112813的博客 906

c++小白学c++日常——STL简介

本文介绍了C++标准模板库(STL)的核心组件,包括容器、算法和迭代器。主要内容涵盖:1. STL容器分类:序列式容器(vector、array、deque等)、关联式容器(set、map等)及容器适配器(stack、queue等);2. 迭代器使用方法和分类;3. 常用STL算法(排序、查找等);4. 特殊容器bitset和string的用法;5. pair模板类的应用场景。文章还对比了不同容器的性能特点和使用场景,并提供了实用示例代码。最后提及了C++标准演进和比赛环境支持情况,适合程序设计竞赛选手参考

c++爱好者 848

竞赛中常用的C++STL用法

括号匹配、DFS 非递归实现、单调栈(求 Next Greater Element)。高效处理二进制位操作,节省空间(1 位占 1bit,而非 1 字节)。:堆排序、TopK 问题(如找前 k 大 / 小元素)、贪心算法。竞赛中最常用的容器,替代普通数组,支持动态扩容,随机访问效率高。存储一对值,无需手动定义结构体,竞赛中常用作返回值、临时存储。:统计元素出现次数、哈希映射(如字符串→数字、节点→权值)。:存储坐标(x,y)、带权值的元素(值,权)等。:字符串处理题(反转、匹配、拼接、子串)。

xiao____________的博客 399

STL总结之其他STL容器

string  可被视为一种STL容器

yangchuankai's blog 643

C++ STL容器深度解析:从底层原理到实战选型指南

在C++编程中,数据结构是组织和管理数据的核心机制,它决定了数据的存储、访问和操作效率。STL(标准模板库)作为C++标准库的重要组成部分,提供了一系列高效、通用的容器类模板,其底层基于不同的数据结构实现,如动态数组、链表、红黑树等,每种结构都有其特定的时间复杂度和空间复杂度特性。理解这些容器的内部原理,对于编写高性能、可维护的代码具有关键的技术价值,能够帮助开发者在内存管理、迭代器失效和多线程安全等方面避免常见陷阱。在实际应用场景中,无论是需要快速随机访问的数值计算、频繁插入删除的实时系统,还是需要有序存

weixin_30945039的博客 347

STLC++

STL C++ 常用容器 1. 序列式容器(Sequence Containers) vector 概述: 动态数组,可以自动扩展大小。 常用操作: size(): 返回元素个数。 empty(): 判断是否为空。 clear(): 清空所有元素。 push_back(): 在末尾添加元素。 pop_back(): 删除末尾元素。 front(): 返回第一个元素。 back(): 返回最后一个元素。 begin(), end(): 返回迭代器。 operator[]: 访问元素。 deque

Mr____Wangk的博客 316

STL学习笔记

容器 容器包括:向量vector 列表list 双队列deque 集合(树)set 多重集合multiset 映射(图)map 多重映射multimap vector是包含一个或多个元素的数组 list是由节点组成的双向链表 每个节点包含一个元素 deque是包含n个连续指向不同元素的指针组成的数组 容器成员满足的条件 1 元素必须是可复制的,所有容器均会产生一个元素副本,所有容器操作返回的均是其元素的副本,导致复制构造函数经常执行 2 元素必须可指派 所有容器的成员函数均可以利用assign函数赋值 3

weixin_46502539的博客 128

C++ STL容器性能优化9大核心技巧:从底层原理到工程实践

在C++高性能编程中,数据结构与算法的选择是性能优化的基石。STL(标准模板库)作为C++的核心组件,其容器(如vector、map、list)的底层实现原理直接决定了程序的内存访问效率与执行速度。理解内存布局、缓存友好性、迭代器失效规则等底层机制,是进行有效性能调优的关键技术价值所在。例如,vector的连续内存特性带来的高缓存命中率,使其在大多数遍历场景下性能远超list;而unordered_map在理想哈希函数下可提供O(1)的平均查找复杂度。这些特性直接影响了在高并发交易系统、实时数据处理等对性能

weixin_32050773的博客 311

stl自己的总结

容器分为: 序列式:vector动态数组,deque双向队列,list双向串行。 关联式容器:set,multiset,map,multimap,hash table 容器配接器:stack,queue,priority_queue stl的数据结构:biset,string,valarray string为basic_string的一个typedef,存储字符串 bitset ...

weixin_30496431的博客 95

C++ STL容器实战指南:从原理到选型与性能优化

在C++编程中,数据结构是组织和管理数据的核心基础,其选择直接影响程序的性能和可维护性。C++标准模板库(STL)提供了一系列经过高度优化的容器模板,如vector、list、map和unordered_map,它们基于不同的底层原理实现,例如动态数组、链表、红黑树和哈希表。理解这些容器的内部机制和性能特征,对于编写高效、健壮的代码至关重要。在工程实践中,容器的选型需要综合考虑数据访问模式、增删频率和内存布局等因素。例如,vector的连续内存特性使其随机访问极快,而unordered_map基于哈希表实现

weixin_34221332的博客 501
上一篇: 三 序列式容器(五)priority_queue(heap)(container adapter)
下一篇: 进程概述
first_wolf
博客等级 码龄14年 43粉丝 472原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值