Sto tentando di implementare std::vector
come esercizio di programmazione.Allocare correttamente memoria nel vettore
Si consideri il seguente frammento di codice:
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
è di tipo T*
. Ho bisogno di allocare memoria usando std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity)
che restituisce std::allocator_traits<allocator_type>::pointer
.
Posso supporre che pointer
può essere implicitamente in T*
e assegnare il valore restituito allocate
-m_data
?
In caso negativo, come allocare correttamente la memoria in vector
?
È possibile creare il proprio allocatore. –
Correlati: http://stackoverflow.com/q/28521203/ – dyp