10

vector 在每种类型的构造函数中都有这个

const allocator_type& alloc = allocator_type()

为什么是常量?我看不出这有什么用。我可以看到传递了一个分配器,因此多个向量可以共享同一个池,但可以与另一组向量分开。但是,使用 const 是否意味着他们只会复制实例数据?复制一个池或任何它似乎没有用。

为什么是常量?

4

2 回答 2

8

分配器应该具有值语义,这意味着向量按值存储它(注意get_allocator()按值返回)。所以构造函数可以很容易地通过 const 引用获取分配器并复制它。

于 2013-09-25T09:13:47.117 回答
5

实际上,将分配器作为const引用传递并将其复制到容器中可以简化事情。否则,如果只传入一个引用,则必须确保分配器不会在容器之前被销毁。您只需要在其副本之间共享分配器状态。您只需将游泳池放在shared_ptr.

于 2013-09-25T09:03:36.110 回答