std :: vector <bool> มาได้อย่างไร


15

ทุกวันนี้นักพัฒนา C ++ ทุกคนยอมรับว่าstd::vector<bool>มันเป็นความผิดพลาดเพราะมันไม่ใช่การหลอกลวงและกรณีการใช้งานของมันนั้นทับซ้อนกับสิ่งเหล่านั้นstd::bitsetอยู่ดี

คะแนนเป็นมาตรฐานได้อย่างไร มันเป็นความขัดแย้งในเวลา? อะไรคือข้อโต้แย้งหลักที่สนับสนุน?


ไม่เคยstd::vectorเขียนมาก่อนstd::bitsetหรือ
dan04


3
นอกจากนี้ Herb Sutter ยังเขียนเกี่ยวกับstd::vector<bool> ที่นี่และที่นี่ด้วย ฉันคิดว่าถ้าคุณขุดเข้าไปในงานเขียนของเขาคุณจะพบข้อมูลทั้งหมดที่คุณต้องการ
Robert Harvey

1
ดูได้ที่gotw.ca/publications/mill09.htm
Robert Harvey

คำตอบ:


10

จาก Herb Sutter โดยใช้การอ้างอิงที่ยกมา:

ความเชี่ยวชาญเฉพาะของเวกเตอร์นั้นถูกนำมาใส่ในมาตรฐานเพื่อแสดงตัวอย่างวิธีเขียนคอนเทนเนอร์พร็อกซี "พร็อกซีคอนเทนเนอร์" เป็นคอนเทนเนอร์ที่มีวัตถุที่คุณไม่ได้รับโดยตรง แทนการให้คุณพอยน์เตอร์หรือการอ้างอิงไปยังวัตถุที่มีอยู่คอนเทนเนอร์พร็อกซีช่วยให้คุณมีวัตถุพร็อกซีที่สามารถใช้เพื่อเข้าถึงหรือจัดการกับวัตถุที่มีอยู่ทางอ้อม คอลเลกชัน Proxied จะมีประโยชน์ในกรณีที่วัตถุภายในคอลเลกชันไม่สามารถเข้าถึงได้โดยตรงอย่างน่าเชื่อถือราวกับว่าพวกเขาอยู่ในหน่วยความจำเช่นกับคอลเลกชันที่ใช้ดิสก์ที่หน้าโดยอัตโนมัติชิ้นส่วนของตัวเองเข้าและออกจากหน่วยความจำ จำเป็น ดังนั้นแนวคิดก็คือการแสดงวิธีทำคอลเล็กชั่นพร็อกซีดังกล่าวให้ตรงตามข้อกำหนดของ "คอนเทนเนอร์"

และใช่มีการอภิปรายในเวลานั้น

  1. สำหรับรายละเอียดที่เต็มไปด้วยเลือดให้ท่องไปที่ DejaNews แล้วทำการค้นหาพลังงานสำหรับ Subject = "vector and bool" และ Forum = " c ++ " การอภิปรายเกิดขึ้นในเดือนมกราคม / กุมภาพันธ์ 1997 นอกจากนี้คุณยังจะได้พบกับการสนทนาล่าสุดจากผู้คนที่ถามว่าจะปิดการใช้งานเฉพาะของเวกเตอร์ได้อย่างไร ดูจุดสิ้นสุดของบทความนี้สำหรับคำแนะนำของฉัน

ส่วนที่เหลือคือประวัติศาสตร์ และฉันเกลียดที่เห็นคำถามที่ไม่มีคำตอบด้วยลิงก์ที่ดีเช่นนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.