C++ 11 đã thực hiện chức năng thành viên data()
thành viên trên std::vector
, cung cấp cho bạn một con trỏ đến mảng bộ nhớ. Điều này có nghĩa là chuyên môn mẫu std::vector<bool>
cũng có thành viên này không? Vì chuyên môn này không lưu trữ dữ liệu theo điều khoản của bool *
, bạn có thể mong đợi loại hành vi nào từ việc gọi data()
?Điều gì xảy ra khi bạn gọi dữ liệu() trên std :: vector <bool>?
Trả lời
page ghi lại lớp này một cách rõ ràng cho biết rằng chuyên môn không cung cấp phương pháp này.
Chuyên môn có cùng chức năng thành viên như vectơ không chuyên biệt, ngoại trừ dữ liệu, emplace và emplace_back, không có trong chuyên môn này.
Điều này other page cũng như §23.3.7 của số C++ specifications để xác nhận.
Nó sẽ không biên dịch, trừ khi triển khai của bạn có tiện ích mở rộng không chuẩn. Chuyên môn của std::vector<bool>
, như được chỉ rõ trong C++ 11 23.3.7/1, không khai báo thành viên data
.
Tôi đã cố gắng thực hiện điều này và lỗi 'gcc' mà tôi nhận được là' dữ liệu' là "giá trị void không bị bỏ qua vì nó phải là", ngụ ý rằng hàm được triển khai, nhưng có 'void' loại trả về. Đó là tò mò. –
@MatsPetersson: Thực sự tò mò. GCC định nghĩa một hàm void, với một nhận xét bí ẩn nói rằng "chúng ta cần một cái gì đó ở đây do cách chúng ta đang thực hiện DR 464 trong lớp vector chế độ gỡ lỗi" (DR 464 là đề xuất thêm 'data()' vào chung ' mẫu vector'). –
Vâng, không có std::vector<bool>::data
, vì vậy điều bạn có thể mong đợi là lỗi biên dịch.
số mỗi std::vector<bool>
Không nhất thiết phải lưu trữ dữ liệu của mình trong một đoạn tiếp giáp duy nhất của bộ nhớ .
Không có thành viên data()
.
- 1. Điều gì thực sự xảy ra khi gọi setCancelsTouchesInView?
- 2. Điều gì sẽ xảy ra khi bạn gọi một phương thức tĩnh trong C#?
- 3. Điều gì xảy ra khi bạn gọi 'nếu khóa trong dict`
- 4. std :: string hoặc std :: vector <char> để giữ dữ liệu thô
- 5. Điều gì sẽ xảy ra với cơ sở dữ liệu Sqlite khi ứng dụng bị xóa
- 6. Điều gì sẽ xảy ra khi va chạm băm xảy ra trong khóa Từ điển?
- 7. Điều gì sẽ xảy ra khi mongodb hết bộ nhớ?
- 8. Điều gì sẽ xảy ra khi bạn đóng ứng dụng bảng điều khiển C++
- 9. Khi nào nên chọn std :: vector over std :: map cho dữ liệu khóa-giá trị?
- 10. Điều gì sẽ xảy ra sau khi gói bị bắt?
- 11. Điều gì xảy ra khi bạn nhấn giới hạn SQL Server Express 4GB/10GB?
- 12. Điều gì sẽ xảy ra nếu bạn không bao giờ gọi Socket.EndConnect?
- 13. Điều gì đang xảy ra khi sử dụng DISTINCT?
- 14. Điều gì xảy ra chính xác khi bạn lưu mô hình Backbone?
- 15. Vector của std :: function <>
- 16. Điều gì sẽ xảy ra khi auto_increment trên cột nguyên đạt đến max_value trong cơ sở dữ liệu?
- 17. Điều gì xảy ra khi chúng tôi không chỉ định <meta charset = "utf-8">?
- 18. Chuyển đổi std :: string thành std :: vector <char>
- 19. điều gì sẽ xảy ra khi bạn nhập những thứ như 12ab vào scanf ("% d", & argu)?
- 20. Điều gì sẽ xảy ra khi tôi biên dịch?
- 21. Điều gì sẽ xảy ra với kết nối cơ sở dữ liệu không được đính kèm?
- 22. Điều gì xảy ra khi chương trình java bắt đầu?
- 23. Khi xảy ra gián đoạn, điều gì xảy ra với hướng dẫn trong đường ống?
- 24. Android - Điều gì xảy ra khi khóa ký hết hạn?
- 25. Bạn có sử dụng std :: shared_ptr <std::vector> thay vì tăng :: shared_array không?
- 26. Điều gì đang xảy ra trong __libc_start_main?
- 27. Gọi jQuery khi có chuyện xảy ra
- 28. Điều gì xảy ra nếu bạn gọi cùng một trình lặp hai lần trên cùng một bộ sưu tập?
- 29. Điều gì cần ghi lại khi ngoại lệ xảy ra?
- 30. Bản sao nhanh của `std :: vector <std :: uint8_t>`
C++ 11 23.3.7 cho biết điều tương tự, có thể quan tâm nhiều hơn) –
Không bao giờ tin tưởng cplusplus.com – Yakk
@Yakk: Có điều gì sai với trang đó không, hoặc bạn có đang theo dõi sự thù hận không giải thích được mà tôi tiếp tục thấy cho trang web đó quanh đây? –