Hra*_*ant 8 c++ stl allocator c++11 c++14
我正在尝试实现std::vector编程练习.
请考虑以下代码段:
template <class T, class Allocator = std::allocator<T>>
class vector
{
public:
using size_type = size_t;
using allocator_type = Allocator;
...
private:
T* m_data;
allocator_type m_alloc;
size_type m_capacity;
...
};
Run Code Online (Sandbox Code Playgroud)
m_data有类型T*.我需要分配使用std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity)哪个返回的内存std::allocator_traits<allocator_type>::pointer.
我可以假设,pointer可隐式转换T*并分配从返回的值allocate来m_data?
如果没有,如何正确分配内存vector?
你应该让你的m_data会员成为一名Allocator::pointer.(如果要遵循标准接口,则应该在向量中创建该类型的本地别名.)
类型是因为某些分配器不处理原始指针,如Boost.Interprocess共享内存分配器,它可能根据配置使用智能指针.