검색결과 리스트
글
bitset 클래스
뭔가 bitmap을 만들어서 사용할 일이 발생했다.
shift와 modulo 연산을 열라게 하게 될 줄 알고 내심 고민..어떻게 효율적으로 짤 수 있을까 잠시 더 고민...
하다가 STL에 놀라운 녀석이 있다는 사실을 발견하였다.
------------------------------
비트 단위의 조작을 할때 사용할 수 있는 클래스.
가령, 10 비트 공간안에 10개의 값을 저장할 때 사용.
그러나, bitset 클래스가 메모리를 비트 단위로 사용하는 것은 아니고 외부로 표현 될 때 10개의 비트처럼 보인다는 거라넹~~~~
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
bitset < 5 > flags;
flags.set ( 0 );
flags.set ( 1 );
flags.set ( 2 );
cout << "상태 : " << flags << endl;
cout << "any : " << flags.any( ) << endl;
cout << "test : " << flags.test(3) << endl;
flags.reset( 1 );
cout << "상태 : " << flags << endl;
cout << "개수 : " << (int)flags.count() << endl;
return 0;
}
[결과]
상태 : 00111
any : 1
test : 0
상태 : 00101
개수 : 2
멤버 함수로는
bitset::any() - 어떤거라도 켜져 있으면 true 를 return.
bitset::test() - 몇 번째 비트의 값이 켜져 있는지 꺼져 있는 지 return.
bitset::set() - 몇 번째 비트의 값을 설정하는 함수. ( default : 1 )
모든 비트를 1로 설정하는 매개 변수 없는 버전 과 특정 비트만 설정하는 매개변수
있는 버전이 있다. 매개 변수 있는 버전에서는 두번째가 지정할 값인데 default로
1 이기 때문에 인덱스만 지정해서 호출하면 1로 설정이 된다.
단, 일반적으로 set()은 설정, reset()은 해제라고 생각하기 때문에 만약 설정값을
0 (false) 으로 두면 착각할 수 있다라고 저자는 얘기하고 나 또한 그럴것 같다.
bitset::reset() - 비트를 0으로 설정하는 멤버 함수.
bitset::count() - 켜진 비트 개수를 return. size_t type로 return.
- <프로젝트와 함께 하는 STL의 아름다움> 491page 참조
출처 : http://blog.naver.com/rudalson/100011108867
'Computer > C/C++' 카테고리의 다른 글
#pragma (1) | 2007.08.08 |
---|---|
vprintf, vsprintf,... 가변 인수 함수. (0) | 2007.08.01 |
STL - MAP (0) | 2007.02.27 |
컨테이너 초기화및 Functor 예제 (0) | 2007.02.27 |
STL lower_bound function 사용하기 Sample... (0) | 2007.02.27 |