C ++分配器:挂钩调整大小函数

时间:2016-06-15 14:43:26

标签: c++ memory-management allocation

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

我可以覆盖一个方法或默认仿函数来获取我想要的行为吗?

1 个答案:

答案 0 :(得分:3)

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

分配器负责容器所需的内存分配,释放等。容器负责实现所需的语义,并使用分配器来协助它这样做。

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

您可以选择提升(circular_buffer)作为替代方案。

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