gpt4 book ai didi

c++ - 分配器作为 vector 和列表中的默认参数

转载 作者:太空狗 更新时间:2023-10-29 23:52:07 25 4
gpt4 key购买 nike

当我尝试使用 vector 、列表等顺序容器时,它显示第二个默认参数为,

typename _Ax = allocator <_Ty> >

我很好奇为什么在其他顺序容器中需要它而不是在队列中。这样做的确切目的是什么。

最好的问候

最佳答案

std::queue(如std::priority_queuestd::stack)是一个容器适配器,而不是容器。它采用的模板参数之一是容器:

template<
class T,
class Container = std::deque<T>
> class queue;

队列在内部使用该容器——它基本上是容器的包装器,提供类似队列的接口(interface)。

容器(默认情况下是一个 std::deque)当然有一个分配器参数,因为队列只是一个包装器,它显然使用与容器相同的分配器。所以队列的分配器参数隐含在它的容器参数中。

分配器参数的目的是让用户能够定义内存分配/解除分配的方法(以及,有时,构造/销毁的方法),这些方法针对以下用例进行了优化手。标准分配器基本上会在需要分配和释放时执行 mallocfree(或类似的东西),这在某些情况下可能是不希望的。将自定义分配器(例如 Boost pool allocator)传递给它可能会提高效率,或者在其他方面很有用。

关于c++ - 分配器作为 vector 和列表中的默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com