当我尝试使用像vector,list这样的顺序容器时,它会显示第二个默认参数as,
typename _Ax = allocator <_Ty> >
Run Code Online (Sandbox Code Playgroud)
我很想知道为什么在其他顺序容器中需要它但不在队列中.这个的确切目的是什么.
最好的祝福
A std::queue(和std::priority_queueand std::stack)是容器适配器,而不是容器.它采用的模板参数之一是容器:
template<
class T,
class Container = std::deque<T>
> class queue;
Run Code Online (Sandbox Code Playgroud)
队列在内部使用该容器 - 它基本上是容器的包装器,提供类似队列的接口.
容器(std::deque默认情况下是一个)当然有一个allocator参数,因为队列只是一个包装器,它显然使用与容器相同的分配器.因此队列的allocator参数隐含在其容器参数中.
allocator参数的目的是使用户能够定义针对手头用例优化的内存分配/释放方法(以及有时,构造/销毁方法).每当需要分配和释放时,标准分配器将基本上执行malloc和free(或等效),这在某些情况下可能是不合需要的.传递一个定制的分配器(例如Boost池分配器)可以提高效率,或者在其他方面有用.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |