2010-08-07 11 views

risposta

8

Il contenitore boost::ptr_vector ha un parametro modello opzionale, CloneAllocator, che definisce la politica di clonazione. L'allocatore predefinito è heap_clone_allocator, che richiama semplicemente il costruttore di copie per clonare un oggetto.

Il Clone Allocator è utilizzato come un modo per aggiungere uno strato di riferimento indiretto attorno alla clonazione. Ad esempio, consente di fornire un allocatore personalizzato che gestisca correttamente la clonazione di un tipo non impostabile.

È possibile trovare ulteriori informazioni in the Boost Pointer Containers Library documentation, che spiega i concetti Clona e Clona Allocatore.

+0

Ah, quindi devo supportare il concetto clonabile anche se il mio oggetto è copiabile? I documenti sembrano menzionare solo clonabili quando l'oggetto non lo è. –

+0

@Billy: questa è la mia comprensione. Non ho usato 'ptr_vector' estesamente, ma è così che gli altri contenitori di puntatori che ho usato gestiscono la clonazione. –

+0

@Billy: puoi anche usare 'view_clone_allocator' invece di' heap_clone_allocator' per aggirare il requisito clonabile. Quindi non è necessario il sovraccarico di 'new_clone()'. Ovviamente non è possibile copiare in profondità i contenitori. –

Problemi correlati