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
TAGS.

Comments