ptr_vector
jest kopiowalna i kopiowalna. W jaki sposób może on głęboko skopiować podstawowe obiekty, gdy nie zna ich konkretnych typów?W jaki sposób boost :: ptr_vector głęboko kopiuje znajdujące się pod nim obiekty?
6
A
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.
Powiązane problemy
- 1. std :: reverse on boost :: ptr_vector wycina obiekty?
- 2. Obiekty głęboko kopiujące w kanciastym?
- 3. Jak usunąć elementy z boost :: ptr_vector
- 4. Czy NSArray kopiuje obiekty?
- 5. Jak przenieść własność elementu boost :: ptr_vector?
- 6. W jaki sposób kontenery STL kopiują obiekty?
- 7. W jaki sposób odśmiecanie gromadzi obiekty samoodniesienia?
- 8. Jak głęboko klonować połączone obiekty w języku C#?
- 9. W jaki sposób obiekty jQuery naśladują tablice?
- 10. Krotki i słowniki znajdujące się na liście
- 11. W jaki sposób gperftools działają pod maską?
- 12. W jaki sposób querySelector działa pod maską?
- 13. W jaki sposób Response.IsClientConnected działa pod okładkami?
- 14. Numpy: znaleźć elementy znajdujące się w zasięgu
- 15. Biorąc pod uwagę nazwę użytkownika i hasło, w jaki sposób podszywać się pod tego użytkownika?
- 16. W jaki sposób przechowywane są obiekty wartości w bazie danych?
- 17. Jak porównać obiekty typów POD
- 18. W jaki sposób używa się layoutIfNeeded?
- 19. Drukowanie Przedmioty znajdujące się w worku w plecaku
- 20. Korzystając z boost :: spirit, w jaki sposób wymagać, aby część rekordu znajdowała się na osobnej linii?
- 21. W jaki sposób sygnał i gniazda są zaimplementowane pod maską?
- 22. W jaki sposób Docker uruchamia jądro Linuxa pod hostem MacOS?
- 23. Jak głęboko kontroluje Controls.Clear()?
- 24. W jaki sposób metoda .delay jQuery działa pod maską?
- 25. W jaki sposób Perl porównuje ciągi pod maską?
- 26. Nieszczelne Treści znajdujące się w katalogu głównym wbudowanego ramach
- 27. Zainstalowałem libboost, ale nie mogę połączyć się z nim
- 28. W jaki sposób oblicza się em?
- 29. W jaki sposób implementuje się fractions.limit_denominator python?
- 30. W jaki sposób metody rozszerzeń łączą się
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. –
@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. –
@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. –