gpt4 book ai didi

c++ - 为什么分配器需要构造和销毁接口(interface)?

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:46 28 4
gpt4 key购买 nike

STL 中的默认分配器具有构造和销毁元素的接口(interface)。

void construct(pointer __p, const _Tp& __val)
void destroy(pointer __p)

但是STL也提供了两种函数来做同样的事情。这些函数在 STL_construct.h 中定义。

void _Construct(_T1* __p, const _T2& __value)
void _Destroy(_Tp* pointer)

我看到 vector 模板使用_Construct 和_Destroy 而不是分配器中定义的接口(interface)。我的问题是为什么我们需要两组函数来做同样的事情?它们有什么区别吗?

最佳答案

_Construct_Destroy函数不是公共(public)接口(interface)的一部分,而是您系统上特定标准库版本的实现细节。任何以双下划线或单下划线加一个大写字母开头的标识符,都是保留的,用户不调用。

委托(delegate)分配器的 construct() 是一种实现选择和 destroy()这些非成员函数的成员函数。顺便说一句,自 C++11 起,不再允许标准容器直接调用分配器的 construct()。和 destroy() , 但必须通过 std::allocator_traits<Allocator> 这样做类型特征。

关于c++ - 为什么分配器需要构造和销毁接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799710/

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