bitarray 제작, 활용
bitarray 간단버전.
물론 gpg 1.10장 조낸 베낀거임.
bitarray에 대한 활용은 여러가지 생각해 볼 수 있을 것 같다.
나열된 수열에서 중복제거나 sorting, 중복갯수 알아내기등
간단한 테스트를 위한 코드.
int _tmain(int argc, _TCHAR* argv[])
{
int iList[] = {5,3,2,11,3,7,4,5,2,4,18,17,3,15,17,18,6,9,19,11};
MgBitArray mybit(20);
mybit.Clear();
for(int i=0; i<20; i++)
{
mybit.SetBit(iList[i]);
}
for(int i=0; i<20; i++)
{
if(mybit.IsBitSet(i))
std::cout<<i<<std::endl;
}
getchar();
return 0;
}
결과를 보면 숫자값이 나열되어 sorting 되어 나열되어 있다.
이녀석을 활용하면 좀 더 재미있는 일을 할 수 있다.
우리가 보통 쓰는 배열의 차원은 많아봐야 3차원이다.
사실 3차원까지도 잘 쓰지는 않지만..... 이차원은 어느정도 쓴다.
사실 차원이야 하나의 긴 배열을 개념적으로 나눠둔거에 불과하지만...
그래서 이차원을 만들어 보았다.
역시 gpg소스보고 초낸 베꼇다.
테스트 소스는 아래와 같다.
int _tmain(int argc, _TCHAR* argv[])
{
MgBitArray2D mybit2d(5,5);
mybit2d.Clear();
mybit2d[1][2] = true;
mybit2d.SetBit(4,4);
mybit2d.FlipBit(1,0);
MgBitArray2D mybit2d2(5,5);
mybit2d2.Clear();
mybit2d2.AllBItsFlip();
mybit2d2[0][2] = false;
mybit2d2.ClearBit(1,4);
mybit2d2.FlipBit(1,0);
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
std::cout<<mybit2d[i][j]<<" ";
}
std::cout<<std::endl;
}
std::cout<<std::endl;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
std::cout<<mybit2d2[i][j]<<" ";
}
std::cout<<std::endl;
}
std::cout<<std::endl;
mybit2d = mybit2d & mybit2d2;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
std::cout<<mybit2d[i][j]<<" ";
}
std::cout<<std::endl;
}
getchar();
return 0;
}
'Study > C++' 카테고리의 다른 글
How to Use __declspec(dllexport) in an MFC Extension DLL (0) | 2009.07.26 |
---|---|
stl set (0) | 2009.07.23 |
bitarray (0) | 2009.07.18 |
Proxy clss (0) | 2009.07.16 |
디자인 패턴 (0) | 2009.07.16 |