c++ bitset详解

 更新时间:2021年08月23日 15:58:55   作者:IOUIUY  
这篇文章主要介绍了C++ bitset用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

bitset

使用bitset需要添加头文件bitset ,bitset是一种特殊的容器 ,bitset数组中 ,每个成员只装1bit位的数据 , 即只能是0 或 1。

bitset 的基本用法 :

初始化bitset容器

bitset<‘size'> 容器名;未初始化容器数据,会默认每位都是0

也可以给一个具体的初始化:存入int数据

bitset<‘size'> 容器名(‘num');

会将num以二进制形式储存在bitset中,如果初始化的容器位数不够 ,会截取num二进制形式下的左边部分,如果bitset容器过大,会把多于的位用0填充;

也可以初始化装入只含0和1的字符串:

biset<‘size'> 容器名('str‘);注 若str中含除0 1 外的字符会报错

容器会将str原样储存在每一位中,若容器过小会优先储存str的左边部分,过大则用0补足

代码示例:

	bitset<10> a;//每个成员只能装0 或1 ,默认为0
    for(int i = 0 ; i < 10 ; i++) cout<<a[0];//可以以数组形式索引bitset容器
    cout<<endl;
    bitset<5> a1(12);//把10以二进制形式存入,容器多余的位用0补齐
    cout<<a1<<endl;//01100
    for(int i = 0 ; i < 5 ; i++) cout<<a1[i];//00110 注 bitset容器以数组形式索引时是从右往左索引
    cout<<endl;
    bitset<5> a2("0100");
    cout<<a2<<endl;//00100

在这里插入图片描述

也可以使用二维形式的bitset容器(感觉像是二维)

bitset<‘size'> 容器名[n];

n表示初始化n个size字节的bitset容器

bitset<5> b[4];
    for(int i = 0 ; i < 4 ; i++)
    {
        b[i] = i;
        cout<<b[i]<<endl;
    }

在这里插入图片描述

可以向b[i]中存入数据,也可以索引某个位

cout<<b[1][0]<<endl;

输出结果1;

betsit用于数据压缩

bitset<1000> a;//可以用于表示1000以下的正整数,若a[i] = 1 , 则表示存储的有i这个数,这样一个容器就可以压缩存储很多不同的数据
a = a<<i;//这样操作就可以给a中压缩存储的数据都加上i,可大幅降低时间复杂度
a = a>>i;//同理也可以都减去i , 之后索引哪些位是1就可以知道计算后的结果

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • VC++在TXT文件指定位置追加内容的方法

    VC++在TXT文件指定位置追加内容的方法

    这篇文章主要介绍了VC++在TXT文件指定位置追加内容的方法,功能较为实用,需要的朋友可以参考下
    2014-08-08
  • C++语言实现hash表详解及实例代码

    C++语言实现hash表详解及实例代码

    这篇文章主要介绍了C++语言实现hash表详解及实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • Opencv实现边缘检测与轮廓发现及绘制轮廓方法详解

    Opencv实现边缘检测与轮廓发现及绘制轮廓方法详解

    这篇文章主要介绍了Opencv实现边缘检测与轮廓发现及绘制轮廓方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • C++实现LeetCode(152.求最大子数组乘积)

    C++实现LeetCode(152.求最大子数组乘积)

    这篇文章主要介绍了C++实现LeetCode(152.求最大子数组乘积),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++ 如何使用RapidJson 写入文件

    C++ 如何使用RapidJson 写入文件

    RapidJSON 是只有头文件的 C++ 库, 不需要编译, 可以直接在项目中使用, 只需把 include/rapidjson 目录复制至系统或项目的 include 目录即可,下面给大家分享C++ 如何使用RapidJson 写入文件,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • C语言如何建立动态链表问题

    C语言如何建立动态链表问题

    这篇文章主要介绍了C语言如何建立动态链表问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • C++实现投骰子的随机游戏

    C++实现投骰子的随机游戏

    这篇文章主要为大家详细介绍了C++实现投骰子的随机游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • opencv2基于SURF特征提取实现两张图像拼接融合

    opencv2基于SURF特征提取实现两张图像拼接融合

    这篇文章主要为大家详细介绍了opencv2基于SURF特征提取实现两张图像拼接融合,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言结构体内存的对齐知识详解

    C语言结构体内存的对齐知识详解

    这篇文章主要介绍了C语言结构体内存的对齐的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 简单的socket编程入门示例

    简单的socket编程入门示例

    这篇文章主要介绍了简单的socket编程入门示例,简单实现client输入内容发送到server端输出,需要的朋友可以参考下
    2014-03-03

最新评论