2010-08-07 17 views

Odpowiedz

8

Kontener boost::ptr_vector ma opcjonalny parametr szablonu, CloneAllocator, który definiuje zasady klonowania. Domyślnym przydziałem jest heap_clone_allocator, który po prostu wywołuje konstruktor kopiowania w celu sklonowania obiektu.

Alokator klonów służy do dodawania warstwy pośredniej wokół klonowania. Na przykład umożliwia podanie niestandardowego przydziału, który poprawnie obsługuje klonowanie typu bez kopii.

Możesz znaleźć więcej informacji w the Boost Pointer Containers Library documentation, która wyjaśnia pojęcia Clonable and Clone Allocator.

+0

Ah - więc muszę poprzeć koncepcję klonowania, nawet jeśli mój obiekt można skopiować? Dokumenty zdają się wspomnieć tylko o sklonowaniu, gdy obiekt nie jest. –

+0

@Billy: Tak rozumiem. Nie użyłem w dużym stopniu 'ptr_vector', ale w ten sposób inne pojemniki z wskaźnikami używałem klonowania klamek. –

+0

@Billy: Można również użyć 'view_clone_allocator' zamiast' heap_clone_allocator', aby ominąć wymaganie, które można sklonować. Wtedy nie jest wymagane przeciążanie dla 'new_clone()'. Oczywiście nie można wtedy kopiować kontenerów. –

Powiązane problemy