特別是,爲什麼我們的爲什麼將分配器作爲模板參數傳遞給容器?
template<typename T, typename A = allocator<T>>
class vector
{
A alloc;
//...
};
,而不是
template<typename T>
class vector
{
allocator<T> alloc;
//...
};
我在C++手動看到這一點,它混淆了我不少。還有什麼其他類型的分配器可能需要/需要?
以及你將如何指定分配器? –
人們可能想要一個使用靜態內存塊而不是堆的分配器。矢量消失後,可以立即釋放整個塊而不是單個塊,從而減少了簿記量並提高了效率。第一個版本允許編寫這樣的自定義分配器,而第二個版本不允許。 – nwp
如果只有一個分配器(免費商店),那麼完全不需要「分配器」。該系統將直接進入免費商店。所以你的問題應該是「爲什麼我們有分配器?爲什麼不用硬編碼'new'和'delete'? –