Cả hai không mâu thuẫn. Allocators là một PolicyPattern hoặc StrategyPattern được sử dụng bởi bộ điều hợp container của thư viện STL để phân bổ các khối bộ nhớ để sử dụng với các đối tượng.
Những allocators thường xuyên tối ưu hóa cấp phát bộ nhớ bằng cách cho phép * phạm vi của các yếu tố để được phân bổ cùng một lúc, và sau đó khởi tạo sử dụng một vị trí mới * mục được lựa chọn từ, đống chuyên ngành thứ tùy thuộc vào kích cỡ khối
Một cách hoặc cách khác, kết quả cuối cùng sẽ (hầu như luôn luôn) là các đối tượng được phân bổ mới (vị trí hoặc mặc định)
Ví dụ sinh động khác sẽ là ví dụ tăng thư viện thực hiện smartpointers. Bởi vì smartpointers là rất nhỏ (với ít chi phí) chi phí phân bổ có thể trở thành một gánh nặng. Nó sẽ làm cho ý nghĩa đối với việc thực hiện để xác định một cấp chuyên ngành để thực hiện phân bổ, vì vậy người ta có thể có hiệu quả std :: set <> của smartpointers, std :: map < ..., smartpointer> vv
(Bây giờ Tôi gần như chắc chắn rằng tăng thực sự tối ưu hóa lưu trữ cho hầu hết các smartpointers bằng cách tránh bất kỳ virtuals, do đó vft, làm cho lớp một cấu trúc POD, chỉ với con trỏ thô như là lưu trữ, một số ví dụ sẽ không áp dụng. đối với các loại smartpointer khác (truy cập smartpointers, con trỏ tới các hàm thành viên, con trỏ tới các hàm thành viên với tham chiếu mẫu, v.v.))
+1 cho "cách tiếp cận STL cho người cấp phát không tối ưu" cộng với liên kết tới "Hướng tới mô hình phân bổ tốt hơn" :) –
Liên kết bạn cung cấp rất hữu ích! –