<font id="zfvhr"><i id="zfvhr"><noframes id="zfvhr">
<dl id="zfvhr"><delect id="zfvhr"><meter id="zfvhr"></meter></delect></dl>
<video id="zfvhr"><i id="zfvhr"></i></video><video id="zfvhr"><i id="zfvhr"><meter id="zfvhr"></meter></i></video>
<video id="zfvhr"></video>
<dl id="zfvhr"><delect id="zfvhr"></delect></dl><dl id="zfvhr"></dl><dl id="zfvhr"><delect id="zfvhr"></delect></dl>
<dl id="zfvhr"></dl><dl id="zfvhr"><i id="zfvhr"><meter id="zfvhr"></meter></i></dl><video id="zfvhr"></video>
<dl id="zfvhr"><delect id="zfvhr"></delect></dl><dl id="zfvhr"></dl>
<dl id="zfvhr"><delect id="zfvhr"></delect></dl>
<video id="zfvhr"><dl id="zfvhr"><delect id="zfvhr"></delect></dl></video>
<dl id="zfvhr"></dl><dl id="zfvhr"><delect id="zfvhr"></delect></dl>
<dl id="zfvhr"></dl><dl id="zfvhr"><delect id="zfvhr"><meter id="zfvhr"></meter></delect></dl>
<dl id="zfvhr"></dl>

C语言位图及位图的实现

 更新时间:2021年05月31日 17:15:01   作者:WhiteShirtI  
这篇文章主要为大家详细介绍了C语言位图及位图的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言位图及位图的实现具体代码,供大家参考,具体内容如下

1.概念

位图(bitset)是一种常用的数据结构,常用在给一个很大范围的数,判断其中的一个数是不是在其中。在索引、数据压缩方面有很大的应用。

位图是用数组实现的,数组的每一个元素的每一个二进制位都表示一个数据,0表示该数据不存在,1表示该数据存在。

2.C++库中bitset的使用

3.bitset的简单实现

当我们存放一个数据时的思路是:

1)确定数据在哪个区间上,即_bitSet的第几个元素上,_bitSet是顺序表,每个元素是char类型,value/8可得到

2)确定数据在哪个区间的哪个bit位上,value%8可以得到

3)找到该位置后,将bit位置1

4)重置的时候,将该bit位置0

#pragma once
#include<vector>
 
//只能用于整型,节省空间 
class BitSet
{
public:
 BitSet(size_t range)
 {
  //当range为8以下的时候,会开辟0个空间,会出错
  _bitSet.resize(range/8+1,0);
 }
 
 void Set(size_t value)
 {
  size_t index = value / 8;  //value>>3
  size_t pos = value % 8;
 
  _bitSet[index] |= (1<<pos); //置1:或1
 }
 
 void ReSet(size_t value) //重置
 {
  size_t index = value / 8;
  size_t pos = value % 8;
 
  _bitSet[index] &= ~(1<<pos); //置0: 与0
 }
 
 bool Test(size_t value) //检测
 {
  size_t index = value / 8;
  size_t pos = value % 8;
  
  return _bitSet[index] & (1<<pos);
 
 }
 
protected:
 vector<char> _bitSet;
};
 
void TestBitMap()
{
 BitSet b(-1); //-1转为无符号数就是最大值
 b.Set(5);
 b.Set(999);
 b.Set(1022);
 b.Set(111110000);
 
 cout<<b.Test(5)<<endl;
 cout<<b.Test(100)<<endl; //100不在位图当中
 cout<<b.Test(999)<<endl;
 cout<<b.Test(1022)<<endl;
 cout<<b.Test(111110000)<<endl;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言main函数的参数及其返回值详细解析

    C语言main函数的参数及其返回值详细解析

    main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出
    2013-10-10
  • c++非变易算法-stl算法

    c++非变易算法-stl算法

    本文主要介绍了C++ STL算法库中的非变易算法,是一些原则上不会变更操作数据的算法,包括:逐个查找算法、元素搜索算法、元素统计算法、序列匹配算法、子序列搜索算法、这些函数均包含于<algorithm>头文件,本文给出的所有代码在VS2010中编译运行通过
    2014-03-03
  • 详解C++中变量的初始化规则

    详解C++中变量的初始化规则

    这篇文章详细介绍了关于C++中变量的初始化规则,C++如果不对变量初始化,可能会导致很多后果,所以学习C++变量初始化规则就很重要了,下面一起来看看
    2016-08-08
  • c++仿函数和函数适配器的使用详解

    c++仿函数和函数适配器的使用详解

    这篇文章主要介绍了c++仿函数和函数适配器的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C++ leetcode之删除并获得点数的示例代码

    C++ leetcode之删除并获得点数的示例代码

    这篇文章主要介绍了C++ leetcode之删除并获得点数的示例代码,本文给大家分享问题解析及解决方案,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • 深入解析C++中的字符数组和处理字符串的方法

    深入解析C++中的字符数组和处理字符串的方法

    这篇文章主要介绍了深入解析C++中的字符数组和处理字符串的方法,需要的朋友可以参考下
    2015-09-09
  • 主流操作系统平台的宏定义

    主流操作系统平台的宏定义

    这篇文章主要介绍了主流操作系统平台的宏定义,最近正在学习C++程序从Windows 平台向Unix 平台移植,参考了 qt 的宏定义文件,需要的朋友可以参考下
    2014-02-02
  • C语言中send()函数和sendto()函数的使用方法

    C语言中send()函数和sendto()函数的使用方法

    这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 常用Hash算法(C语言的简单实现)

    常用Hash算法(C语言的简单实现)

    下面小编就为大家带来一篇常用Hash算法(C语言的简单实现)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • C语言使用矩形法求定积分的通用函数

    C语言使用矩形法求定积分的通用函数

    这篇文章主要为大家详细介绍了C语言使用矩形法求定积分的通用函数,分别求解sinx, cosx,e^x,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论

国产女人18毛片水真多