假设我已经使用了 int
的 std::pmr::vector
。它已经初始化并且包含 N 个项目(重要的是 N 大于 0)。它在底层使用内存资源M1
。
到目前为止,一切都很好。它有效,我可以将它与另一个使用完全不同的内存资源的整数 vector 进行比较,等等,以及多态分配器必须提供的所有其他奇妙的东西。
现在我想更改 vector 的底层内存资源(抛开性能或其他方面所有可能的缺点)。
类似这样的事情:
template<typename MR>
void setMemoryResource(MR *resource) {
// ... ??
}
如何管理它以便操作后所有元素仍然存在?
我要求这些容器和分配器都没有方法来设置不同的内存资源。因此我什至想知道这是否可能。
我可以想象几种方法来做到这一点,但没有一种看起来是惯用的。实际上,所有这些看起来都像是绕过 API 漏洞的棘手方法。
我很确定我错过了一些基本的东西,它可能就像作业一样简单。我错了吗?
最佳答案
没有简单的方法。您不能在容器的生命周期内更改与容器关联的内存资源。您可以使用分配器扩展的复制/移动构造函数创建一个具有所需内存资源的新容器,但不能更改现有容器的内存资源。
关于c++ - 多态分配器 : how to change the memory resource of a container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47855555/