bitmap是通过1个位表示一个状态,比如:int类型有2^32个数字,即4G个数字,那么每个数字一个状态,就是2^32个bit,即512 MB。
即4G个数字(大约是4亿数字,如果是4G个整数,就是16GB大小)可以转化为512 MB大小
1 #include <iostream> 2 #include <memory.h> 3 using namespace std; 4 5 char bitmap[4] ; 6 7 void add(int n) 8 { 9 bitmap[n/8] |= (128 >> n%8); 10 } 11 12 bool search(int n) 13 { 14 if(bitmap[n/8] & (128>>n%8)) 15 return true; 16 return false; 17 } 18 19 int main() 20 { 21 int n[] = {2, 5, 7, 9, 25,}; 22 int i; 23 24 memset (bitmap, 0, sizeof(bitmap)); 25 26 for( i=0; i<5; i++) 27 add(n[i]); 28 29 for( i=0; i<5; i++) 30 if(search(n[i])) 31 cout << "find " << n[i] <<endl; 32 33 return 0; 34 35 36 }