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

时间:2017-04-10 13:51:09

标签: c++ templates containers allocator

特别是,为什么我们有

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

而不是

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

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

1 个答案:

答案 0 :(得分:2)

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

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