我想知道vector在C ++中如何工作。当我们添加一个新元素并且向量耗尽空间时,它会分配一个新内存并将所有先前的元素复制到新位置。
现在,如何定义此行为?
A* a = new A(prev_a);
将在new分配的新位置复制构造。但是对于矢量,我们必须分配多个对象。但是我们不能这样做,因为new数组不能有初始化参数。
所以我想知道vector如何实现这一点?我假设向量首先分配了一个内存,然后在特定位置调用了复制构造函数。怎么做?谢谢
答案 0 :(得分:5)
我假设向量首先分配一个内存,然后在特定位置调用一个拷贝构造函数。
是的,这是两个单独的步骤:
allocator::allocate
进行内存分配。