求教!位储存访问的效率
现有大量bool数据,为了节省内存消耗,以bitset类储存,实现方法如下:
vector<bitset<32> > vb(10000000);
但是在读写时下标需要重新计算,如读写第100个数据时则要:
vb[100/32].set(100%32)
vb[100/32][100%32]
如果需要历遍所有数据时运算量会比较大,我这样设想过:
vector<bitset<32> >::iterator iter
int Bit=0;
bool result;
for (iter=vb.begin(); iter!=vb.end();)
{
if(Bit<32)
{
result=iter[Bit];
++Bit;
}
else
{
iter++;
Bit=0;
result=iter[Bit];
}
}
不知道有没有更好的方法呢?