[effective STL] 항목 18 : vector<bool> 쓰지마

2015. 12. 26. 23:57프로그래밍/Effective STL

728x90
728x90

서론

vector<bool>은 STL 컨테이너로서 두 가지가 부실하다.

- 첫째는 STL 컨테이너가 아니다.

- 둘째는 bool을 담고 있지도 않다.


실제로 vector<bool>은 bool을 압축시킨 데이터 표현 방식으로 구현되어 있다.

한 바이트에 여덟 개의 bool을 담을 수 있게 구현.(이게 무슨 짓이지?)

프록시 객체라고 불리는 패턴을 쓰고 있다.


실제로 안 되는 예시

1
2
3
    std::vector<bool> boolVec;
    bool* pb = &boolVec[0];
    //error C2440: 'initializing' : cannot convert from 'std::_Vb_reference<_Alloc> *' to 'bool *'
cs


그럼 정확한 bool을 담는건 뭐야?

deque<bool>, bitset을 사용하면 된다.

728x90
반응형