为什么容器的分配器作为模板参数传递

Why are allocators to containers passed as template parameters?

本文关键字:参数传递 分配器 为什么      更新时间:2023-10-16

特别是,为什么我们有

template<typename T, typename A = allocator<T>>
class vector
{
    A alloc;
    //...
};

而不是

template<typename T>
class vector
{
    allocator<T> alloc;
    //...
};  

我在一本C++手册中看到了这一点,这让我很困惑。人们可能想要/需要哪些其他类型的分配器?

因为这仅适用于一个分配器 - 标准分配器。但是,如果您想以不同的方式分配内存怎么办?例如,您可能希望使用共享内存、文件支持的内存或其他任何内容。

这就是拥有分配器的全部意义 - 允许用户自定义分配和释放内存的方式。