Làm thế nào mà std :: vector <bool> ra đời?


15

Ngày nay, hầu như tất cả các nhà phát triển C ++ đều đồng ý rằng đó std::vector<bool>là một sai lầm vì nó không phải là một container và các trường hợp sử dụng của nó phần lớn trùng lặp với những trường hợp std::bitsetnào.

Làm thế nào mà nó được bình chọn vào tiêu chuẩn? Có phải nó đã gây tranh cãi vào thời điểm đó? Các đối số hỗ trợ chính là gì?


Không std::vectorđược viết trước đây std::bitset?
dan04


3
Ngoài ra, Herb Sutter viết nhiều về std::vector<bool> đâyđây . Tôi nghĩ rằng nếu bạn tìm hiểu thêm một chút về các bài viết của anh ấy, bạn sẽ tìm thấy tất cả thông tin bạn cần.
Robert Harvey

Câu trả lời:


10

Từ Herb Sutter sử dụng tài liệu tham khảo được trích dẫn:

Chuyên môn hóa vector được cố tình đưa vào tiêu chuẩn để cung cấp một ví dụ về cách viết một thùng chứa proxy. "Container proxy" là một container có các đối tượng bạn không nhận được trực tiếp; thay vì cung cấp cho bạn các con trỏ hoặc tham chiếu đến một đối tượng được chứa, một thùng chứa proxy cung cấp cho bạn các đối tượng proxy có thể được sử dụng để gián tiếp truy cập hoặc thao tác với một đối tượng được chứa. Các bộ sưu tập được ủy quyền có thể hữu ích trong trường hợp các đối tượng trong bộ sưu tập không thể luôn được truy cập trực tiếp một cách đáng tin cậy như khi chúng ở trong bộ nhớ, ví dụ như với một bộ sưu tập dựa trên đĩa tự động đưa các phần của chính nó vào và ra khỏi bộ nhớ dưới vỏ bọc như cần thiết Vì vậy, ý tưởng là chỉ ra làm thế nào để làm cho một bộ sưu tập proxy như vậy đáp ứng các yêu cầu của một "container"

Và vâng, đã có cuộc thảo luận tại thời điểm đó.

  1. Để biết tất cả các thông tin chi tiết, hãy lướt tới DejaNews và thực hiện tìm kiếm sức mạnh cho Chủ đề = "vector và bool" và Forum = " c ++ ". Các cuộc thảo luận diễn ra vào tháng 1 / tháng 2 năm 1997. Bạn cũng sẽ tìm thấy nhiều cuộc thảo luận gần đây hơn từ những người hỏi làm thế nào để tắt chuyên môn véc tơ; xem phần cuối của bài viết này để được tư vấn của tôi

Phần còn lại là lịch sử. Và tôi ghét nhìn thấy một câu hỏi chưa được trả lời với các liên kết tốt như vậy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.