std :: vector如何复制其数据以进行重新分配?

时间:2015-08-25 15:26:45

标签: c++ memory-management stdvector

我编写了一个类似于std :: vector的模板数组类,除了它重用空索引或' hole'删除元素时,不要将所有后续元素移回填充它。

当我尝试存储一个非常重要的对象时,我遇到了一个bug,因为我在重新分配期间使用memcpy来复制元素。 std :: vector是否遍历其所有元素并调用复制构造函数,还是使用了其他我不知道的技巧?

1 个答案:

答案 0 :(得分:1)

是的,复制元素然后销毁原件是基本的想法。

您可以使用模板元编程进行优化,当然:

  • 如果类型具有普通的复制构造函数,则可以使用memcpy
  • 如果类型具有普通的析构函数,则可以跳过该步骤

C ++ 11增加了一个新的维度,你也可以移动对象。