ตามที่ (หวังว่า) เราทุกคนรู้ว่าvector<bool>
พังโดยสิ้นเชิงและไม่สามารถถือว่าเป็นอาร์เรย์ C ได้ วิธีที่ดีที่สุดในการรับฟังก์ชันนี้คืออะไร? จนถึงตอนนี้ความคิดที่ฉันคิดคือ:
- ใช้
vector<char>
แทนหรือ - ใช้คลาส Wrapper และมี
vector<bool_wrapper>
พวกคุณจัดการกับปัญหานี้อย่างไร? ฉันต้องการc_array()
ฟังก์ชั่น
เป็นคำถามข้างเคียงถ้าฉันไม่ต้องการc_array()
วิธีการใดวิธีที่ดีที่สุดในการแก้ไขปัญหานี้หากฉันต้องการเข้าถึงโดยสุ่ม ฉันควรใช้ deque หรืออย่างอื่น?
แก้ไข:
- ฉันต้องการการปรับขนาดแบบไดนามิก
- สำหรับผู้ที่ไม่ทราบ
vector<bool>
มีความเชี่ยวชาญเพื่อให้bool
ใช้เวลา 1 บิต ดังนั้นคุณจึงไม่สามารถแปลงเป็นอาร์เรย์สไตล์ C ได้ - ฉันเดาว่า "เสื้อคลุม" เป็นการเรียกชื่อผิด ฉันกำลังคิดบางอย่างเช่นนี้:
แน่นอนฉันต้องอ่านmy_bool
เนื่องจากปัญหาการจัดตำแหน่งที่เป็นไปได้ :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;