【发布时间】:2020-01-07 01:28:05
【问题描述】:
我需要一个用于 STL 向量和映射的自定义分配器,以便它在预分配的内存块中“分配”内存。我遇到了几乎所有分配器中的这段代码。
Allocator(const Allocator<U, growSize> &other)
{
if (!std::is_same<T, U>::value)
rebindAllocator = new std::allocator<T>();
}
谁能解释一下它的作用以及为什么我们需要实现这个接口? 非常感谢。
【问题讨论】:
-
“我在几乎所有分配器中都发现了这段代码。”你有参考资料吗?
-
@AntonStafeyev 您发布/链接的内容并不是非常地道的 C++ 代码,我不会将其用作参考。
-
这很公平。我的观点很简单,这不是典型的代码,你不会在“几乎所有的分配器”中找到它。事实上,我从未见过类似的逻辑,而且据我所知,实现此代码的人也并不真正了解 C++ 分配器。
-
老实说,我强烈建议您不要学习分配器,直到您对 C++ 相当先进。它们非常容易出错,这就是为什么它们的规范会继续在新的 C++ 版本中重写。也许Howard Hinnant’s article 有一些见解。