2010-08-07 85 views

回答

8

boost::ptr_vector容器有一個可選的模板參數CloneAllocator,它定義了克隆策略。默認分配器是heap_clone_allocator,它只是調用複製構造函數來克隆對象。

克隆分配器用作在克隆周圍添加一個間接層的方式。例如,它允許您提供正確處理不可複製類型的克隆的自定義分配器。

你可以在the Boost Pointer Containers Library documentation找到更多的信息,它解釋了Clonable和Clone Allocator的概念。

+0

啊 - 所以我需要支持可克隆概念,即使我的對象是可複製構造的?該文件似乎只提到克隆時,該對象不是。 – 2010-08-07 19:35:33

+0

@比利:那是我對它的理解。我沒有廣泛使用'ptr_vector',但這是我用來處理克隆的其他指針容器的方式。 – 2010-08-07 20:02:05

+0

@比利:你也可以使用'view_clone_allocator'而不是'heap_clone_allocator'來解決可克隆的需求。那麼'new_clone()'不需要重載。顯然你不能深度複製容器。 – 2015-03-02 12:35:10