c – 为什么STL为Allocator保留一个接口?

前端之家收集整理的这篇文章主要介绍了c – 为什么STL为Allocator保留一个接口?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么STL会为Allocator保留一个接口?
以矢量为例:
template<class T,class Allocator = std::allocator<T>> 
class vector;

因为我们有很多选择来分配内存和构造对象
operator new,delete,new [],delete [],在创建对象时几乎可以做任何我们需要的事情.
那么为什么像vector这样的STL容器需要一个Allocator接口,如果我们不分配一个接口,它最多是默认的std :: allocator?为什么不使用新的表达式?
如果目的是使用户定义的分配行为成为可能,为什么不让用户提供他们自定义的运算符new,new []等?

解决方法

如此具体的向量并改变它的分配方式而不改变所有向量的分配方式.

必须根据您分配或全局替换的内容来覆盖new.的std ::矢量< INT>和std :: vector< int,some_other_allocator>可以使用不同的分配策略;实际上,分配器可以是有状态的并且具有共享状态.

一个经典的是快速堆栈分配器,在它超出范围之前不会解除分配.

猜你在找的C&C++相关文章