Có std::unique_ptr
làm cho Tăng cường.Thư chứa thư viện lỗi thời trong C++ 11/14 không?Boost.Pointer Container đã lỗi thời bởi std :: unique_ptr trong C++ 11/14?
Trong C++ 98/03 không được di chuyển ngữ nghĩa, và một con trỏ thông minh như shared_ptr
có tài liệu tham khảo liên quan đếm overhead (cho cả khối ref đếm, và đan cài increment/suất này) nếu so với con trỏ thô. Vì vậy, một cái gì đó như std::vector<shared_ptr<T>>
có trên không nếu so với std::vector<T*>
.
Nhưng là std::vector<std::unqiue_ptr<T>>
cũng giống như hiệu quả như std::vector<T*>
(không tính tham khảo overhead), và ngoài an toàn liên quan đến trường hợp ngoại lệ và hủy diệt tự động (ví dụ: vector<unique_ptr<T>>
destructor sẽ tự động gọi destructors cho T
các mục có con trỏ được lưu trữ trong vector
)?
Nếu có, thì Boost.Pointer Container vẫn có một vị trí hữu ích hợp lệ trong mã C++ 11/14 hay chỉ là lỗi thời?
'void *' hoisting cũng là một "tối ưu hóa đã biết" để giảm các mẫu instantiations cho 'std :: vector', nhưng cả libC++ hiện tại lẫn libstdC++ hiện tại đều không sử dụng tối ưu hóa đó nữa. xem [câu trả lời này] (http://stackoverflow.com/a/13914629/819272) bởi @JonathanWakely. –
TemplateRex