想高校還用系統的bitset?
用了這東西?就高校不到哪裏去了
要真正高效就自己用unsigned?char去存
每次訪問內存至少是1字節
bitset只是方便妳編程而已
毫無效率可言
每次取壹位
至少從內存讀壹個字節的數據出來
自己用?unsigned?char去做
每次取壹個字節
每次比對8位
最高效的就是?自己嵌入匯編
下面是壹個例子
僅供參考:
#include?<stdio.h>
unsigned?char?inline?calc(unsigned?char*?src,unsigned?char*?pos)
{
unsigned?char?x=0;
unsigned?char?uc=*(src+(unsigned?int)pos);
_asm
{
push?ecx
mov?ecx,8
loop1: shr?uc,1
adc?x,0
loop?loop1
pop?ecx
}
return?x;
}
int?main()
{
unsigned?char?bittest[9]="\x01\x02\x03\x04\x5\x6\x7\xff",*p=NULL;
for(int?i=0;i<9;i++)
printf("bit%d:%d\n",i,calc(bittest,p++));
return?0;
}
結果不對妳打我好了
比bitset 至少快8倍
如果bitset內部實現沒有進行匯編級別的優化 可能就快幾百倍了
不信樓主自己試試