c++ - 确保 `std::vector` 不会移动其指针

标签 c++ pointers vector memory-management

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

施工中,std::vector创建一个新指针 T*随着 vector 的增长,std::vector负责随着 vector 的增长分配所需的内存。如果 vector 增长以至于没有更多的空间来添加元素T , 然后 std::vector会自动将指针移动到另一个位置并将数据复制过来。

是否可以告诉 vector 在构造时使用什么指针并指示固定大小并在程序试图使 vector 大于构造时指示的大小时中止?

最佳答案

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

std::vector 通过分配器对象分配空间。如果您愿意,可以很容易地编写一个最小的分配器,它有一个额外的调用来禁用分配,如果在禁用分配后尝试分配,则调用中止。

关于c++ - 确保 `std::vector` 不会移动其指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840772/

相关文章:

c++ - 弗洛伊德-沃歇尔算法

c - 为堆中的结构元素分配内存?

c - 我需要将结构数组传递给函数[大代码]

c++ - 对齐 SSE 的模板 vector 结构

parsing - GAE Go template.Execute,传递带有向量的结构

c++ - 将 unique_ptr 分配给引用时,在成员函数之前调用析构函数

c++ - 带数组索引的函数调用

c++ - 提高c++中优先级队列的时间复杂度

c++ - 在 C++ 中使用 const 的指针和符号位置

python - 如何在恒定时间内在python中查找列表/元组的大小