一个封装好的C++比特数组BitArray,可以对位进行直接操作
本来仅仅只是用来做哈夫曼实验时的辅助,后来一想干脆封装好,省得以后又要用到比特位的操作。
基本用法示例:
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,可以对位进行直接操作的更多相关文章
- 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] 之外的 ...
- 字符串string和内存流MemoryStream及比特数组byte[]互转
原文:字符串string和内存流MemoryStream及比特数组byte[]互转 字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str, ...
- 每天一个JavaScript实例-递归实现反转数组字符串
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
一个封装的使用Apache HttpClient进行Http请求(GET.POST.PUT等)的类. import com.qunar.payment.gateway.front.channel.mp ...
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 比如输入一个长度为9的数组{1,2.3.2,2.2.5,4.2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 ...
- JavaScript实现生成指定范围随机数和一个包含不重复数的随机数组
目前JavaScript里面还没有现成的方法可以实现这个简单地需求,我们就需要自己写代码了. 在js中有个函数:Math.random() 这个函数可以生成 [0,1) 的一个随机数. 我们的简单的改 ...
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串转比特数组 复制代码 代码如下: (1)byte[] bt=System.Text.Encoding.Default.GetB ...
- Day_09【常用API】扩展案例1_程序中使用一个长度为3的对象数组,存储用户的登录名和密码……
需求说明:实现用户注册.登陆功能: 1.程序中使用一个长度为3的**对象数组**,存储用户的登录名和密码: 例如如下格式: 登录名 密码 生日 爱好 zhangsan 1111 1998-03-15 ...
随机推荐
- epoll使用具体解释(精髓)
epoll - I/O event notification facility 在linux的网络编程中,非常长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就 ...
- [Angular-Scaled Web] 8. Using $http to load JSON data
Using the $http service to make requests to remote servers. categories-model.js: angular.module('egg ...
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...
- 文献阅读笔记——group sparsity and geometry constrained dictionary
周五实验室有同学报告了ICCV2013的一篇论文group sparsity and geometry constrained dictionary learning for action recog ...
- MYSQL内存--------启动mysql缓存机制,实现命中率100% 转
虽然这个标题夸张得过了头,但此文很完整,值得学习.转自 http://www.yy520.net/read.php?278 myql优化,启动MySQL缓存机制,实现命中率100% 配置你的mysql ...
- Android(java)学习笔记104:Map集合的遍历之键找值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- 无限滚动 --demo
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- Java 8: Lambdas和新的集合Stream API
Lambda是Java8的主要特色,Java 8: Lambdas & Java Collections | zeroturnaround.com一文介绍了使用Lambda集合处理大量数据的方 ...
- Hibernate的回调与拦截
在Hibernate中,有两种方式可以捕获实体对象的GRUD操作并执行相应的处理 Hibernate回调(org.hibernate.classic.Lifecycle接口): //Provides ...
- Hive中自定义函数
Hive的自定义的函数的步骤: 1°.自定义UDF extends org.apache.hadoop.hive.ql.exec.UDF 2°.需要实现evaluate函数,evaluate函数支持重 ...