gpt4 book ai didi

c++ - 我如何使用 std::allocator 代替 realloc?

转载 作者:太空狗 更新时间:2023-10-29 20:54:33 24 4
gpt4 key购买 nike

<分区>

假设我正在使用 std::allocator 编写自定义 vector 来包装 newdelete

当元素的数量超过 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 函数?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com