The default allocator in stl has interfaces to construct and destroy elements.
void construct(pointer __p, const _Tp& __val)
void destroy(pointer __p)
But stl also provides two kinds of functions to do the same thing. These functions are defined in stl_construct.h.
void _Construct(_T1* __p, const _T2& __value)
void _Destroy(_Tp* pointer)
I see that the vector template uses _Construct and _Destroy rather than the interface defined in allocator. My question is why we need two sets of functions to do the same thing? Do they have any difference?