C++ 分配器:连接到调整大小函数
C++ Allocator: hooking into a resize function
据我所知,当 vector
用完 space 时,分配器用于创建新的 space。但是,我想创建一个自定义调整大小策略,该策略将移除底部 25% 的元素并始终保持相同的大小。这是为了建立一个有限的缓存 space.
有没有我可以覆盖的方法或默认仿函数来获得我想要的行为?
TL;DR,您尝试使用错误的容器。
分配器负责根据容器的需要分配、释放内存等。容器有责任实现所需的语义,它使用分配器来协助它这样做。
std::vector
可能不是您描述的缓存的最佳选择,或者至少不是原始形式。
您可以考虑将 boost (circular_buffer
) 作为替代方案。
考虑到您提到的 vector
,您也可以考虑用您想要的缓存接口包装它,但更改分配器不是正确的路线。对分配器的更改将使向量认为容器的 "lower" 25% 中存在有效对象,而分配器已经删除了它们(或它们的内存)。
据我所知,当 vector
用完 space 时,分配器用于创建新的 space。但是,我想创建一个自定义调整大小策略,该策略将移除底部 25% 的元素并始终保持相同的大小。这是为了建立一个有限的缓存 space.
有没有我可以覆盖的方法或默认仿函数来获得我想要的行为?
TL;DR,您尝试使用错误的容器。
分配器负责根据容器的需要分配、释放内存等。容器有责任实现所需的语义,它使用分配器来协助它这样做。
std::vector
可能不是您描述的缓存的最佳选择,或者至少不是原始形式。
您可以考虑将 boost (circular_buffer
) 作为替代方案。
考虑到您提到的 vector
,您也可以考虑用您想要的缓存接口包装它,但更改分配器不是正确的路线。对分配器的更改将使向量认为容器的 "lower" 25% 中存在有效对象,而分配器已经删除了它们(或它们的内存)。