본문 바로가기

[ C/ C++ 프로그래밍 ]/[ STL ]

[ 혼연 정리 ] 시퀀스 컨테이너 - 5 [ 벡터 ]


◎ vector<bool>

 - bool은 크기가 1바이트 이지만 true or false 를 기억하는데 1비트만 있으면 된다. --> 7비트 낭비
 - bool형에 특수화 되어 있어 하나의 값을 저장하는데 비트 하나만 사용 --> c구조체의 비트필드와 유사
 - vector<bool>은 진위형의 요소들을 1비트에 하나씩 압축하여 저장하는 별도의 독립 클래스

 

 - vector<BOOL>도 가능하나 BOOL은 정수와 크기가 같다. ==> vector<bool>보다 32배 크다.

 - vector<bool> 표준에 포함되어 있긴하나 몇가지 문제점과 컴파일러마다 지원 범위가 다르다. ==> 가급적 사용을 자제.

 - 사용예)

1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 void main()
7 {
8      vector<bool> vb(32);
9
10      cout << vb[10] << endl;
11      vb[10]=true;
12      cout << vb[10] << endl;
13
14      vector<bool>::reference r=vb[10];
15      cout << r << endl;
16      r.flip();
17      cout << r << endl;
18      vector<bool>::iterator it;
19      for (it=vb.begin();it!=vb.end();it++) {
20           cout << *it;
21      }
22 }


 

ps : 출처 및 자세한 내용은  www.WinAPI.co.kr 참고