【发布时间】:2013-09-18 22:22:09
【问题描述】:
stl 中的默认分配器具有构造和销毁元素的接口。
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)
我看到向量模板使用 _Construct 和 _Destroy 而不是分配器中定义的接口。我的问题是为什么我们需要两组函数来做同样的事情?它们有什么区别吗?
【问题讨论】:
-
_Construct 和 _Destroy 不是标准库的一部分。事实上,以下划线和大写字母开头的标识符是为实现保留的,因此使用它们实际上是错误的。您应该改用分配器版本。
标签: c++ interface stl implementation allocator