รายการที่ 18 ของสกอตต์เมเยอร์สหนังสือSTL มีผลบังคับใช้ 50 วิธีที่เฉพาะเจาะจงในการปรับปรุงการใช้งานของคุณของไลบรารีแม่แบบมาตรฐานกล่าวว่าเพื่อหลีกเลี่ยงการvector <bool>ที่มันไม่ได้เป็นภาชนะ STL และมันไม่ได้โดดถือbools
รหัสต่อไปนี้:
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 []return type ควรจะเป็นT&แต่ทำไมถึงเป็นกรณีพิเศษสำหรับvector<bool>?
อะไรvector<bool>จริงๆประกอบด้วย?
รายการกล่าวเพิ่มเติมว่า:
deque<bool> v; // is a STL container and it really contains bools
สามารถใช้เป็นทางเลือกอื่นได้vector<bool>หรือไม่?
ใครช่วยอธิบายเรื่องนี้ได้ไหม