C 将对象添加到向量

C++ add objects to vector

本文关键字:向量 添加 对象      更新时间:2023-10-16

我不确定我的方法是否正确,所以我要您验证。我正在尝试将单个对象添加到2D向量。这是代码:

std::vector<std::vector<*Tree>> treeVector(100);
for (auto &j : treeVector)
        j.assign(treeVector.size(), new Tree(0, 0));

该类称为Tree。该代码有效,但似乎对向量中的对象增加了一倍?我想念什么吗?

循环

for (auto &j : treeVector)
  j.assign(treeVector.size(), new Tree(0, 0));

等于

for (auto &j : treeVector) {
  Tree *tmp = new Tree(0, 0);
  j.assign(treeVector.size(), tmp);
}

在每次迭代中只分配并构造一棵树,TreeVector的每个元素(std::vector<Tree *>)将包含100个指向同一对象的指针。

您想要的可能是:

for (auto &j : treeVector) {
  for (int i=0; i<treeVector.szie(); ++i)
    j.push_back(new Tree(0,0));
}

您可能需要使用std::unique_ptr,这将有助于管理内存。