为什么分配器const在向量中?

时间:2013-09-25 09:01:43

标签: c++ vector

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

const allocator_type& alloc = allocator_type()

为什么它是常量?我看不出那是多么有用。我可以看到在分配器中传递,因此多个向量可以共享同一个池,但可以从另一组向量中分组。但是,const并不意味着他们只复制实例数据?复制池或其他任何东西似乎都没用。

为什么是常量?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

即可