我在c ++中使用list类,我不知道allocator在这里是什么意思
template < class T, class Allocator = allocator<T> > class list;
Run Code Online (Sandbox Code Playgroud)
如果我有list <int> mylist它意味着当一个元素添加到列表时使用分配器分配整数类型的内存?什么时候需要自定义分配器?
GMa*_*ckG 11
是.An allocator是一种通过使用内存来分配内存分配的方法.如果容器需要一些内存,而不是:
// too rigid, cannot allow custom allocation schemes
void* mem = ::operator new(someAmount);
Run Code Online (Sandbox Code Playgroud)
你得到:
// flexible, allows custom allocation schemes
void* mem = myallocator.allocate(someAmount);
Run Code Online (Sandbox Code Playgroud)
有一个标准的分配器std::allocator,它使用全局operator new和operator delete.
您希望在需要以特殊方式分配时随时使用自己的分配器.这些情况可能是:从一些空闲列表中获取内存,从堆栈中分配等等.(通常为了优化目的,尽管您也可以使用自定义分配器记录统计信息)大多数情况下,标准分配器工作正常.
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |