[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
반응형
'프로그래밍 > Effective STL' 카테고리의 다른 글
[effective STL] 항목 22 : set과 multiset의 키를 바꾸지 말자. (1) | 2016.02.07 |
---|---|
[effective STL] 항목 21 : 연관 컨테이너용 비교 함수는 ==에 대해선 false를 반환해야 한다. (0) | 2016.01.03 |
[effective STL] 항목 20 : 연관 컨테이너에 포인터 넣을 때 비교 함수자 타입을 정해주기 (1) | 2015.12.27 |
[effective STL] 항목 17 : 용량 바꿔치지 묘수(swap) (0) | 2015.12.26 |
[effective STL] 항목 16 : 기존 C API에 vector와 string 넘기기 (0) | 2015.12.26 |
[effective STL] 항목 15 : string은 여러 가지 방식으로 구현되어 있다. (0) | 2015.12.17 |
[effective STL] 항목 14 : 재할당 방지 reserve (0) | 2015.12.17 |