Ordnen Sie Speicher im Vektor korrekt zu

8

Ich versuche std::vector als Programmierübung zu implementieren.

Betrachten Sie das folgende Code-Snippet:

%Vor%

m_data hat den Typ T* . Ich muss Speicher mit std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity) zuweisen, die std::allocator_traits<allocator_type>::pointer zurückgibt.

Kann ich annehmen, dass pointer implizit in T* umgewandelt werden kann und den von allocate an m_data ? zurückgegebenen Wert zuweisen kann?

Wenn nicht, wie wird der Speicher in vector richtig zugeordnet?

    
Hrant 23.09.2015, 14:43
quelle

1 Antwort

7

Sie sollten Ihr m_data Mitglied zu Allocator::pointer machen. (Sie sollten wahrscheinlich einen lokalen Alias ​​dieses Typs in Ihrem Vektor erstellen, wenn Sie der Standardschnittstelle folgen möchten.)

Der Typ ist da, weil einige Zuweiser nicht in rohen Zeigern arbeiten, wie der Shared-Memory-Allokator Boost.Interprocess, der abhängig von der Konfiguration Smartpointer verwenden kann.

    
Sebastian Redl 23.09.2015, 14:58
quelle

Tags und Links