如何分配STL地图?堆栈还是堆?

Mas*_*way 9 c++ memory-management stl map

我想知道mapc ++中的STL 是否具有连续的内存 - 或者是分配给堆的内存?

Ker*_* SB 9

由于map动态容器,因此动态分配其元素的内存(无论这意味着什么(它取决于可配置的分配器)!).

而且,map是一个基于节点的容器,因此每个元素进入一个独立的,单独的分配(以便允许最大迭代器和引用非失效).元素几乎肯定不会在内存中连续,并且可能以反映您添加它们的方式分散.

实际上,地图将被实现为某种类型的平衡树,以实现对数查找,插入和删除时间.

(如果您希望数据结构具有连续的存储和对数查找时间,请考虑已排序的向量.)