【问题标题】:C++ Allocator: hooking into a resize functionC++ 分配器:挂钩到调整大小函数
【发布时间】:2016-06-15 14:43:26
【问题描述】:

据我所知,当vector 空间不足时,分配器用于创建新空间。但是,我想创建一个自定义调整大小策略,该策略将删除底部 25% 的元素并始终保持相同的大小。这是为了构建一个空间有限的缓存。

是否有我可以重写的方法或默认函子以获得我想要的行为?

【问题讨论】:

标签: c++ memory-management allocation


【解决方案1】:

TL;DR,您尝试使用错误的容器。

分配器负责容器所需的内存分配、释放等。实现所需语义是容器的责任,它使用分配器来协助它。

std::vector 可能不是您描述的缓存的最佳选择,或者至少不是原始形式。

您可以寻求提升 (circular_buffer) 作为替代方案。

鉴于您提到的vector,您还可以使用所需的缓存接口包装它,但更改分配器不是正确的路线。对分配器的更改将使向量认为在容器的“较低”25% 中有有效对象,而分配器已经删除了它们(或它们的内存)。

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 2011-07-09
    • 1970-01-01
    • 2020-11-26
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多