【发布时间】:2015-12-20 22:53:50
【问题描述】:
我正在尝试将std::vector 实现为编程练习。
考虑以下代码sn-p:
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>::pointer 的std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity) 分配内存。
我可以假设pointer 可以隐式转换为T* 并将allocate 返回的值分配给m_data吗?
如果不是,如何在vector中正确分配内存?
【问题讨论】:
-
你可以制作自己的分配器。
标签: c++ c++11 stl c++14 allocator