据我所知,当vector
空间不足时,分配器用于创建新空间。但是,我想创建一个自定义调整大小策略,它将删除底部25%的元素,并始终保持相同的大小。这是为了构建空间有限的缓存。
我可以覆盖一个方法或默认仿函数来获取我想要的行为吗?
答案 0 :(得分:3)
TL; DR,您正在尝试使用错误的容器。
分配器负责容器所需的内存分配,释放等。容器负责实现所需的语义,并使用分配器来协助它这样做。
std::vector
可能不是您描述的缓存的最佳选择,或者至少不是原始格式。
您可以选择提升(circular_buffer
)作为替代方案。
鉴于您提到的vector
,您还可以查看使用所需的缓存接口,但更改分配器不是正确的路由。对分配器的更改将使向量认为容器的“较低”25%中存在有效对象,而分配器已经将它们(或内存)移除了。