我在阅读为什么C++分配器中没有重新分配功能?和是否有可能创建在运行时堆的数组,然后在需要时分配更多的空间?,这清楚地表明动态数组对象的重新分配是不可能的.
但是,在Josuttis 的C++标准库中,它声明了一个Allocator,它allocator具有一个allocate具有以下语法的函数
pointer allocator::allocate(size_type num, allocator<void>::pointer hint = 0)
Run Code Online (Sandbox Code Playgroud)
其中hint有一个实现定义的含义,可用于帮助提高性能.
有没有利用这个的实现?
C++11 在20.6.9.1 分配器成员中声明:
\n\n\n\n\n4 - [注意:在容器成员函数中,相邻元素的地址通常是传递参数的不错选择
\nhint。\xe2\x80\x94尾注]
\n [...]
\n 6 - [...] 的使用hint未指定,但如果实现需要的话,可作为对本地的帮助。
将新元素分配到内存中现有元素附近或附近可以通过提高局部性来提高性能;因为它们通常一起缓存,所以附近的元素往往会一起沿着内存层次结构移动,并且不会相互驱逐。
\n