确保"std::vector"不会移动其指针

Ensure a `std::vector` won't move its pointer

本文关键字:移动 指针 vector std 确保      更新时间:2023-10-16

在C++中,std::vector<T>基本上是指针(T*)、大小对象(int)和容量对象(int)。

在构造时,std::vector创建一个新的指针T*,并且随着矢量的增长,std::vector负责随着矢量的增加分配所需的内存。如果矢量增大,没有更多空间添加元素T,则std::vector将自动将指针移动到另一个位置并复制数据。

是否可以告诉矢量在构造时使用哪个指针,并指示固定大小,如果程序试图使矢量大于构造时指示的大小,则中止?

不,std::vector没有提供直接的方法。

CCD_ 11通过分配器对象来分配空间。如果您愿意的话,编写一个最小分配器会很容易,它有一个额外的调用来禁用分配,如果在禁用分配后尝试进行分配,则会调用中止。