asd*_*sdf 8 c++ stdlist allocator
如何std::list分配保存next/ prev指针的节点及其T包含的元素?
我认为标准分配器只能用于为一种类型std::allocator::allocate分配内存(因为以递增的方式分配内存sizeof(T)).因此,似乎不可能在单个分配中分配列表节点和包含的对象,这意味着必须使用实现决定的任何方式分配节点,并且节点存储指向对象而不是对象本身的指针,这意味着两个级别的间接从指向列表节点的指针到它包含的对象,这似乎是低效的.是这样的吗?
allocator有一个成员模板类rebind,它负责分配其他类型.std::allocator 这里的页面实际上有一个你要问的确切事情的例子.我会在这里引用它:
直到C++ 11
std::list<T, A>Node<T>使用分配器分配某些内部类型的节点A::rebind<Node<T>>::other
从C++ 11开始
std::list<T, A>Node<T>使用分配器分配某种内部类型的节点,分配器std::allocator_traits<A>::rebind_alloc<Node<T>>是根据A::rebind<Node<T>>::otherA是否实现的std::allocator
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |