特别是,为什么我们有
template<typename T, typename A = allocator<T>>
class vector
{
A alloc;
//...
};
而不是
template<typename T>
class vector
{
allocator<T> alloc;
//...
};
我在C ++手册中看到了这一点,这让我很困惑。可能需要/需要哪些其他类型的分配器?
答案 0 :(得分:2)
因为这只适用于一个分配器 - 标准分配器。但是如果你想以不同的方式分配内存呢?例如,您可能希望使用共享内存或文件支持的内存或其他任何内容。
这是拥有分配器的重点 - 允许用户自定义内存分配和释放的方式。