我正在尝试作为一项编程练习实现 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;
...
};
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
中如何正确地分配内存?