一个封装好的C++比特数组BitArray,可以对位进行直接操作
2024-08-22 00:19:07
本来仅仅只是用来做哈夫曼实验时的辅助,后来一想干脆封装好,省得以后又要用到比特位的操作。
基本用法示例:
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
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:: }
){
;
,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:: }
最新文章
- Linux基础知识集锦
- 使用XML定制Ribbon的一点小前奏(稍微再进一步的理解XML)
- codeforces 446B(优先队列)
- 去块率波 Deblocking filter
- 看看如何面试前端工程师:Github很重要
- 字符数组char
- Codeforces Gym 100338B Geometry Problem 计算几何
- CentOS安装libpcap
- COJN 0575 800601滑雪
- C# 文件上传
- Singleton 单例模式 泛型 窗体控制
- Hbase 基础 - shell 与 客户端
- CNN网络架构演进:从LeNet到DenseNet
- centos7下安装docker(16.1docker跨主机存储--Rex-Ray)
- [python网络编程]使用scapy修改源IP发送请求
- python正则表达式,以及应用[下载图片]
- Hadoop基础-Protocol Buffers串行化与反串行化
- ntp/系统时钟/硬件时钟/双系统下计算机时间读取的问题
- PHP表单-PHP $_POST 变量
- onsubmit不起作用的原因
热门文章
- 2013年中国区Skyline软件价格体系
- C++ CheckBox_Porerty
- 【ZZ】超全面的设计模式总结
- UNIX标准化及实现之POSIX标准可选头文件
- UVA 10006 - Carmichael Numbers 数论(快速幂取模 + 筛法求素数)
- fancybox的使用
- 深入理解计算机系统第二版习题解答CSAPP 2.20
- [改善Java代码]优先选择线程池
- [改善Java代码]推荐使用枚举定义常量
- ActiveMQ(5.10.0) - JNDI Support