向量调用如何在特定位置复制构造函数?

Jae*_*bum 2 c++ stl vector

我想知道向量在C ++中如何工作。当我们添加一个新元素并且向量耗尽空间时,它将分配一个新的内存并将所有先前的元素复制到新位置。

现在,如何定义此行为?

A* a = new A(prev_a);
Run Code Online (Sandbox Code Playgroud)

将在新分配的新位置复制构造。但是对于矢量,我们必须分配多个对象。但是我们不能这样做,因为new数组不能有初始化参数。

所以我想知道,向量如何实现呢?我假设向量首先分配了一个内存,然后在特定位置调用了复制构造函数。怎么做?谢谢

Max*_*kin 5

我假设向量首先分配了一个内存,然后在特定位置调用了复制构造函数。

是的,这是两个单独的步骤:

  1. 使用分配内存allocator::allocate
  2. 初始化。它使用allocator :: construct复制/移动构造元素,通常使用new放置。