#includeusing namespace std; template class Bitset { public: Bitset() { _Tidy();//調用_Tidy()函數會初始化所有位為0. } void Show()//顯示01位. { for(int _I=0;_I<_N;_I++) { cout<<(test(_I)?'1':'0'); } } bool test(int _P)//測試該位置是否為真(1). { int _I = _P/32; return (A[_I]>>(_P%32))&0x1; } void _Tidy() { for(int _I=0;_I<_W;_I++) { A[_I] = 0; } } void set(int _P)//將_p下標設置為1. { int _I = _P/32; A[_I] |= (0x1<<(_P%32)); } void printf() { for(int _I=0;_I<_N;_I++) { test(_I) && (cout<<_I<<" "); } }//打印排列結果. private: typedef long LONG;//以long的4個字節為一個單位數組. enum{_Nw=(_N-1)/(sizeof(LONG)*8), _W=_Nw+1}; int A[_W]; }; int main() { Bitset<600> a; int b[]={1,1,1,1,2,2,3,3,34,2,423,42,34,23,1,1,3,213,123,21,3,3,4,32,543,5,46,3,45,35,23,42,3}; for(int i=0;i<33;i++) { a.set(b[i]); } a.printf(); }