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

use*_*152 6 c++ vector

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

const allocator_type& alloc = allocator_type()
Run Code Online (Sandbox Code Playgroud)

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

为什么它是常量?

Rei*_*ica 6

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


Jur*_*aho 5

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