std :: vector的第二个参数

Def*_*ult 10 c++ vector allocator

看着向量,我意识到在创建向量时我从未使用过第二个参数.

std::vector<int> myInts; // this is what I usually do
std::vector<int, ???> myOtherInts; // but is there a second argument there?
Run Code Online (Sandbox Code Playgroud)

看看上面的链接,它说它适用于:

要使用的分配器对象而不是构造新的对象.

或者,对于这个:

分配器:用于定义存储分配模型的分配器对象的类型.默认情况下,使用类型T的allocator类模板,它定义了最简单的内存分配模型,并且与值无关.

我想这与内存管理有关.但是,我不知道如何使用它.

有关于此的任何指示?

Joh*_*ell 4

默认分配器 ,std::allocator<>将处理由std::vector<>(和其他人)进行的所有分配。每次需要新的分配时,它都会从堆中进行新的分配。

通过提供自定义分配器,您可以预先分配一大块内存,然后将其分割,并在需要单独分配时分发较小的内存块。这将显着提高分配速度,这在游戏中是很好的,但与默认分配器相比,其代价是增加了复杂性。

某些std类型实现具有用于少量数据的基于堆栈的内部存储。例如,std::basic_string<>可能会使用所谓的小字符串优化,其中只有长于某个固定长度的字符串(例如 16 个字符(只是一个示例!))从分配器获取分配,否则使用内部数组。