本来仅仅只是用来做哈夫曼实验时的辅助,后来一想干脆封装好,省得以后又要用到比特位的操作。

基本用法示例:

 BitArray bits;
 bits[] = ;
 bits[] = ;
 cout<<bits[]<<endl;  ]<<endl;  ]<<endl; ){}
)/+;}
*bytes;}
             size_t setBitCapacity(size_t newBitsCapacity);
            size_t getBitSize(){            size_t getBitCapacity(){            size_t getByteSize(){            size_t getByteCapacity(){                                   uchar * m_data;
          size_t m_bitsLength;
          size_t m_bitsCapacity;
           };
 #endif 

1 #include "BitArray.h"

;
){
;
,t_bytesLength);
*t_bytesLength;
*t_fact_bytesCapacity;
,t_fact_bytesCapacity);
;i<m_bitsLength;i++){
      }
 
 BitArray::BitArray(unsigned  {
     m_data = data;
     m_bitsLength = bitsLength;
     m_bitsCapacity = *BitsToBytes(m_bitsLength);
     m_owns = isOwns;
     size_t t_bytesLength = BitsToBytes(m_bitsLength);
              memset(m_data,,t_bytesLength);
 }
 
               delete[] m_data;
     m_data = data;
     m_bitsLength = bitsLength;
     m_bitsCapacity = *BitsToBytes(m_bitsLength);
     m_owns = isOwns;
     size_t t_bytesLength = BitsToBytes(m_bitsLength);
              memset(m_data,,t_bytesLength);
 }
 
  {
                             }
                     }
                   }
      ){
         position += m_bitsLength; 
     }
                    }          ;
              }         size_t t_new_bitsLength = position+;
         size_t t_new_bytesCapacity = BitsToBytes(c_increaseCapacity*t_new_bitsLength);
         size_t t_new_bitsCapacity = *t_new_bytesCapacity;
         uchar* t_data =                                  memset(t_data,,t_new_bytesCapacity);
         memcpy(t_data,m_data,BitsToBytes(m_bitsCapacity));
                      delete[] m_data;
         }
         m_data = t_data;
         m_bitsCapacity = t_new_bitsCapacity;
         m_bitsLength = t_new_bitsLength;
         m_owns =               }
 }
 
  {
                    }
      && position >= -(               }
      }
 
 size_t BitArray::setBitSize(size_t newBitsLength)
 {
     size_t origin_bitsLength = m_bitsLength;
              m_bitsLength = newBitsLength;
     }          ,     }
      }
 
 size_t BitArray::setBitCapacity(size_t newBitsCapacity)
 {
               size_t new_bytesCapacity = BitsToBytes(newBitsCapacity);
              uchar* t_data =                                  memset(t_data,,new_bytesCapacity);
                            }                   }
                      delete[] m_data;
         }
         m_data = t_data;
         m_bitsCapacity = BytesToBits(new_bytesCapacity);
                      m_bitsLength = m_bitsCapacity;
         }
         m_owns =      }
      }
 
  {
          m_owns = owns;
      }
 
     {
      ;    
      - (position) % ; 
              map[sub] |= <<pos;                  map[sub] &= ~(<<pos);           }
 
     {
      ;
      - (position)%;
      );
 }
 
 Bit::Bit(BitArray *bits,     m_bits = bits;
     m_position = position;
 }
 
 Bit& Bit::     m_bits->      }
 
 Bit::      }

一个封装好的C++比特数组BitArray,可以对位进行直接操作的更多相关文章

  1. java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}

    /** * 小米关于小米笔试题 数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = * input数组中,除了input[i] 之外的 ...

  2. 字符串string和内存流MemoryStream及比特数组byte[]互转

    原文:字符串string和内存流MemoryStream及比特数组byte[]互转   字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str, ...

  3. 每天一个JavaScript实例-递归实现反转数组字符串

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。

    一个封装的使用Apache HttpClient进行Http请求(GET.POST.PUT等)的类. import com.qunar.payment.gateway.front.channel.mp ...

  6. 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字

    题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 比如输入一个长度为9的数组{1,2.3.2,2.2.5,4.2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 ...

  7. JavaScript实现生成指定范围随机数和一个包含不重复数的随机数组

    目前JavaScript里面还没有现成的方法可以实现这个简单地需求,我们就需要自己写代码了. 在js中有个函数:Math.random() 这个函数可以生成 [0,1) 的一个随机数. 我们的简单的改 ...

  8. C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换

    定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串转比特数组 复制代码 代码如下: (1)byte[] bt=System.Text.Encoding.Default.GetB ...

  9. Day_09【常用API】扩展案例1_程序中使用一个长度为3的对象数组,存储用户的登录名和密码……

    需求说明:实现用户注册.登陆功能: 1.程序中使用一个长度为3的**对象数组**,存储用户的登录名和密码: 例如如下格式: 登录名 密码 生日 爱好 zhangsan 1111 1998-03-15 ...

随机推荐

  1. oracle internal :VIEW: X$KCBLDRHIST - Direct Read HISTory

    WebIV:View NOTE:159900.1     Note (Sure) - Note    Mods - Note Refs Error ORA 600 TAR TAR-Info Bug B ...

  2. [Angular 2] Value Providers & @Inject

    Dependecies aren’t always objects created by classes or factory functions. Sometimes, all we really ...

  3. iOS开发——Metal教程

    Metal Swift教程   学习使用苹果GPU加速3D绘图的新API:Metal!   在iOS 8里,苹果发布了一个新的接口叫做Metal,它是一个支持GPU加速3D绘图的API.   Meta ...

  4. cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)

    没办法,浏览这么高,为啥没人投票呢?朋友们,我这篇文章參加了csdn博文大赛.喜欢的来点个赞吧!点击:http://vote.blog.csdn.net/Article/Details?article ...

  5. 贪心算法(2)-Kruskal最小生成树

    什么是最小生成树? 生成树是相对图来说的,一个图的生成树是一个树并把图的所有顶点连接在一起.一个图可以有许多不同的生成树.一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n ...

  6. SIGGRAPH 2014 之行

    当地时间8月8号: 经历十个多小时的飞行,在紧急出口旁的位置上忍受发动机的轰鸣声后,顺利降落温哥华机场.回答完加拿大边检的几个诸如为何而来,打算住哪儿的问题后,比较顺利出关.三十五加元的打车费及百分十 ...

  7. Logistic回归总结

    原文:http://blog.csdn.net/dongtingzhizi/article/details/15962797  Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (2 ...

  8. 如何制作按钮hover状态

    1.选中文字加背景图层 2.Ctrl+J复制图层,向下轻移. 3.点击所复制图层的背景图层,右键选中——混合选项 弹出图层样式框: 4.选择渐变叠加,将渐变——反向勾选上,确定: 5.完成,效果如图.

  9. win7引导项顺序

    转载:http://jingyan.baidu.com/article/72ee561aa1d123e16138df81.html 问题描述: 个人在宿舍使用的比较多的是Window 7,而它的启动项 ...

  10. CoreDate的使用

    勾选 xcode的 CoreDate会帮我们自动创建 CoreData 但是我们通常不那样使用,通常把 CoreDate 在单利类中创建, // // ZYDAO.h // StoryboardTes ...