vector在每种类型的构造函数中都有这个
const allocator_type& alloc = allocator_type()
为什么它是常量?我看不出那是多么有用。我可以看到在分配器中传递,因此多个向量可以共享同一个池,但可以从另一组向量中分组。但是,const并不意味着他们只复制实例数据?复制池或其他任何东西似乎都没用。
为什么是常量?
答案 0 :(得分:5)
分配器应该具有值语义,这意味着向量按值存储它(注意get_allocator()
按值返回)。因此构造函数可以通过const引用轻松地获取分配器,然后复制它。
答案 1 :(得分:4)
实际上,将分配器作为const
引用传递并将其复制到容器中可以简化操作。否则,如果只传入了一个引用,则必须确保在容器之前不销毁分配器。您只需要在其副本之间共享分配器状态。您只需将池保存在shared_ptr
。