Scott Meyers의 저서 Effective STL : 표준 템플릿 라이브러리 사용을 개선하는 50 가지 특정 방법 의 항목 18은 vector <bool>
STL 컨테이너가 아니고 실제로 bool
s를 보유하지 않기 때문에 피해야한다고 말합니다 .
다음 코드 :
vector <bool> v;
bool *pb =&v[0];
컴파일되지 않고 STL 컨테이너의 요구 사항을 위반합니다.
오류:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []
반환 유형은이어야 T&
하지만 왜 특별한 경우 vector<bool>
입니까?
vector<bool>
실제로 무엇 으로 구성됩니까?
항목은 추가로 말합니다.
deque<bool> v; // is a STL container and it really contains bools
이것의 대안으로 사용할 수 있습니까 vector<bool>
?
누구든지 이것을 설명해 주시겠습니까?