(内功深厚的高手进)如何实现一个bit数组

allenchou 2005-04-05 11:45:45
请问如何实现一个bit数组,

可以通过下标进行某一位的置位或清零.
...全文
570 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjh1982 2005-04-25
  • 打赏
  • 举报
回复
std::vector<bool>的代码.
xxxdg 2005-04-25
  • 打赏
  • 举报
回复
class Bit
{
public:
Bit & operator = (Bit & value)
{
data = value.data;
return *this;
}

Bit & operator = (char value)
{
data = value & 1;
return *this;
}
private:
char data : 1;
};

int main()
{
Bit x[10];
return 0;
}
bing_huo 2005-04-24
  • 打赏
  • 举报
回复
要像一般A[n]=0这样用起来方便,好像只有搞运算符重载.

bitset 就可以啊。。有现成的为什么不用?
useresu 2005-04-24
  • 打赏
  • 举报
回复
bitset
joymouse 2005-04-24
  • 打赏
  • 举报
回复
要像一般A[n]=0这样用起来方便,好像只有搞运算符重载.
bing_huo 2005-04-24
  • 打赏
  • 举报
回复
std::bitset
std::vector<bool> 也可以 因为内部也是用bit数组做的

具体操作看stl相关资料~~
llmsn 2005-04-24
  • 打赏
  • 举报
回复
呵呵,对C的移位操作不是很熟悉.
zhousqy 2005-04-24
  • 打赏
  • 举报
回复
看programming pearls
arrowcy 2005-04-24
  • 打赏
  • 举报
回复
1楼的再加上运算符重载的话,用起来就很方便了
arrowcy 2005-04-24
  • 打赏
  • 举报
回复
bool a[N]实质上还是一个字节存一个位的信息
astrophor 2005-04-24
  • 打赏
  • 举报
回复
bool a[N]?
zengwujun 2005-04-24
  • 打赏
  • 举报
回复
std::bitset
allenchou 2005-04-24
  • 打赏
  • 举报
回复
没人搞定自己搞定:
#define MAXSIZE 100000
#define BASE 32 // WINwin32 下int是32 bit
#define SHITF 5
#define MASK 0X1F

int a[1 + MAXSIZE/BASE];

void set(int i)
{ a[i>> SHIFT] |= 1 << (i & MASK); }
void clr(int i)
{ a[i >> SHIFT] &| = ~(1 << (i & MASK));}
int test(int i)
{ return a[i>>SHIFT] & (1 << (i & MASK));}


64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧