Tôi đang cố gắng triển khai std::vector
làm bài tập lập trình.Phân bổ chính xác bộ nhớ trong vector
Hãy xem xét các đoạn mã sau:
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
có kiểu T*
. Tôi cần cấp phát bộ nhớ bằng cách sử dụng std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity)
trả về std::allocator_traits<allocator_type>::pointer
.
Tôi có thể giả định rằng pointer
có thể được đúc hoàn toàn tới T*
và chỉ định giá trị được trả lại từ allocate
đến m_data
?
Nếu không, cách phân bổ bộ nhớ chính xác trong vector
?
Bạn có thể tự mình phân bổ. –
Liên quan: http://stackoverflow.com/q/28521203/ – dyp