Próbuję wprowadzić std::vector
jako ćwiczenie programistyczne.Poprawnie przydzielić pamięć w wektorze
Rozważmy następujący fragment kodu:
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
ma typ T*
. Potrzebuję przydzielić pamięć przy użyciu std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity)
, która zwraca std::allocator_traits<allocator_type>::pointer
.
Mogę przypuszczać, że pointer
można niejawnie rzutować na T*
i przypisać wartość zwracaną z allocate
do m_data
?
Jeśli nie, jak poprawnie przydzielić pamięć w vector
?
Można utworzyć własny program przydzielania. –
Powiązane: http://stackoverflow.com/q/28521203/ – dyp