C++ C++;将对象添加到向量

C++ C++;将对象添加到向量,c++,object,vector,C++,Object,Vector,我不确定我的方法是否正确,所以我请你核实一下。 我试图将单个对象添加到二维向量中。代码如下: std::vector<std::vector<*Tree>> treeVector(100); for (auto &j : treeVector) j.assign(treeVector.size(), new Tree(0, 0)); std::向量树向量(100); 适用于(auto&j:treeVector) j、 赋值(treeVector

我不确定我的方法是否正确,所以我请你核实一下。 我试图将单个对象添加到二维向量中。代码如下:

std::vector<std::vector<*Tree>> treeVector(100);

for (auto &j : treeVector)
        j.assign(treeVector.size(), new Tree(0, 0));
std::向量树向量(100);
适用于(auto&j:treeVector)
j、 赋值(treeVector.size(),新树(0,0));
该类称为
。代码可以工作,但向量中似乎有两倍的对象? 我遗漏了什么吗?

循环

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
)将包含100个指向同一对象的指针

您想要的可能是:

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

对于(int i=0;我认为实际上你需要一个
std::vector treeVector(100);
。你确定要存储指针吗?不确定。我也尝试过不使用指针。没有太大的区别。但是尽管如此。不使用指针也会出现同样的问题。如果你不需要指针(我大部分时间都尽量避免使用指针)然后你可以使用
std::vector treeVector(100,std::vector(100));
和你的done.@NathanOliver,然后像这样填充向量?
for(int i=0;i
,什么是正确的?