<分区>
假设我正在使用 std::allocator
编写自定义 vector 来包装 new
和 delete
。
当元素的数量超过 vector 的容量时,我想将缓冲区重新分配给更大的东西。我可以通过调用 realloc()
轻松实现这一点。我不想这样做,因为我认为分配/解除分配的责任应该在分配器中。
然而,查看 std::allocator
的界面,我不知道如何进行重新分配。只有以下方法:
T* allocate( std::size_t n );
void deallocate( T* p, std::size_t n );
我应该调用 allocator::allocate
然后调用 allocator::deallocate
而不是仅仅调用 realloc
吗?那有效率吗?它也一定是 std::vector
正在做的事情。为什么 std::allocator
不提供 reallocate
函数?