在C++中提供了bitset这种集合,专门用来进行位操作,因此实现起来比较容易
C++版本:
- /*位图C++STL实现 2011.10.19*/
- #include <iostream>
- #include<bitset>
- #define MAX 1000000
- using namespace std;
- bitset<MAX+1> bit; //声明一个有(MAX+1)个二进制位的bitset集合,初始默认所有二进制位为0
- int main(int argc, char *argv[])
- {
- int n,i;
- while(scanf("%d",&n)!=EOF)
- {
- bit.set(n,1); //将第n位置1
- }
- for(i=0;i<=MAX+1;i++)
- {
- if(bit[i]==1)
- printf("%d ",i);
- }
- return 0;
- }
|