2010-08-07 89 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