C++ C++;语法:向列表中添加新向量

C++ C++;语法:向列表中添加新向量,c++,syntax-error,C++,Syntax Error,好的,这有点复杂,而且我的语法记忆很差 我有一个列表,其中包含了称为“平面”的对象向量 在这里: std::列出可能的_平面; 飞机是我做的一门课。 我现在要做的是给它添加新的条目。 比如说: possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i])); vector<Plane> newPlane; // Vector you add to list

好的,这有点复杂,而且我的语法记忆很差

我有一个列表,其中包含了称为“平面”的对象向量

在这里:

std::列出可能的_平面;
飞机是我做的一门课。 我现在要做的是给它添加新的条目。 比如说:

possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i]));
vector<Plane> newPlane; // Vector you add to list later
Plane myPlane; // Your object
// Do what you want with your Plane object
newPlane.push_back(myPlane); // Insert your object to vector
possible_planes.push_back(newPlane); // Insert vector to list
可能的平面。向后推(std::vector新平面(boundRect[i].area(),center[i]);

这就是我无法正确理解语法的地方。正确的语法是什么样子的?

也许可以尝试使用多行和多个变量,如下所示:

possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i]));
vector<Plane> newPlane; // Vector you add to list later
Plane myPlane; // Your object
// Do what you want with your Plane object
newPlane.push_back(myPlane); // Insert your object to vector
possible_planes.push_back(newPlane); // Insert vector to list
向量新平面;//稍后添加到列表中的向量
平面myPlane;//你的目标
//对平面对象执行所需操作
新建平面。向后推(myPlane);//将对象插入向量
可能的平面。推回(新平面);//在列表中插入向量

也许可以尝试使用多行和多个变量,如下所示:

possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i]));
vector<Plane> newPlane; // Vector you add to list later
Plane myPlane; // Your object
// Do what you want with your Plane object
newPlane.push_back(myPlane); // Insert your object to vector
possible_planes.push_back(newPlane); // Insert vector to list
向量新平面;//稍后添加到列表中的向量
平面myPlane;//你的目标
//对平面对象执行所需操作
新建平面。向后推(myPlane);//将对象插入向量
可能的平面。推回(新平面);//在列表中插入向量

代码> 您的代码在表达式的中间声明变量,以及在不应该的时候动态分配。试试这个:

possible_planes.push_back(std::vector<Plane>());
possible_planes.back().push_back(Plane(boundRect[i].area(), center[i]));
可能的平面。向后推(std::vector());
可能的_平面.back().push_back(平面(boundRect[i].area(),center[i]);

<>注意,如果我知道你使用的是C++ 11的工具链,这可能会减少更多。

你的代码是在表达式中间声明一个变量,以及在不应该的时候动态分配。试试这个:

possible_planes.push_back(std::vector<Plane>());
possible_planes.back().push_back(Plane(boundRect[i].area(), center[i]));
可能的平面。向后推(std::vector());
可能的_平面.back().push_back(平面(boundRect[i].area(),center[i]);
注意,如果我知道您使用的是与C++11兼容的工具链,那么这一点可能会减少得更多。

1.首先创建新向量,然后添加平面

可能的平面。向后推(std::vector());
可能的_平面.back().push_back(平面(boundRect[i].area(),center[i]);
二,。有这样一个函数

std::vector createNewPlaneVector(平面和平面){
std::向量结果;
结果:推回(平面);
返回结果;
}
然后可以在一行中添加新向量

可能的平面。向后推(createNewPlaneVector(平面(boundRect[i].area(),center[i]);
如果您使用的是C++11,那么这会变得更简单:

可能的平面。向后推(std::vector(){Plane(boundRect[i].area(),center[i]);
1.首先创建新向量,然后添加平面

可能的平面。向后推(std::vector());
可能的_平面.back().push_back(平面(boundRect[i].area(),center[i]);
二,。有这样一个函数

std::vector createNewPlaneVector(平面和平面){
std::向量结果;
结果:推回(平面);
返回结果;
}
然后可以在一行中添加新向量

可能的平面。向后推(createNewPlaneVector(平面(boundRect[i].area(),center[i]);
如果您使用的是C++11,那么这会变得更简单:

可能的平面。向后推(std::vector(){Plane(boundRect[i].area(),center[i]);

您确定这里需要二维容器吗?您的代码和变量名表明情况并非如此。也就是说,
可能的_平面
包含向量,所以向其中添加一个向量。然后将平面添加到向量(而不是向量列表)。这不是声明该变量的位置,也不应该在该代码的任何地方出现单词
new
。是的,我需要一个2D容器。我认为我的变量表明必须有多个列表项-->平面。有许多同类飞机。这就是为什么这里有一个向量,它把所有属于同一个的向量都放在一起。你确定这里需要一个二维容器吗?您的代码和变量名表明情况并非如此。也就是说,
可能的_平面
包含向量,所以向其中添加一个向量。然后将平面添加到向量(而不是向量列表)。这不是声明该变量的位置,也不应该在该代码的任何地方出现单词
new
。是的,我需要一个2D容器。我认为我的变量表明必须有多个列表项-->平面。有许多同类飞机。这就是为什么有一个向量,它把那些属于一起的向量保持在一起。这似乎是正确的,谢谢。我认为我必须使用new,但显然构造函数(?)已经为我这样做了?@user2175762在堆上分配新内存并返回指向该位置的指针。构造函数只是在堆栈上分配内存。让编译器为您完成这项工作。嗯,但在编译时,我不知道我将拥有多少实例。这就是我使用新操作符的原因。@user2175762向量将为您处理飞机的分配,就像您将新向量推到列表上时列表所做的那样。这两条台词在幕后有很多事情要做。谢谢,是的,有很多事情要做。问题是我认为我需要知道列表分配的大小,这就是为什么我试图用我的参数创建列表条目。但现在我认为它只持有某种指针,所以它实际上并不在乎向量有多大。我说的对吗?这似乎是对的,谢谢。我认为我必须使用new,但显然构造函数(?)已经为我这样做了?@user2175762在堆上分配新内存并返回指向该位置的指针。构造函数只是在堆栈上分配内存。让编译器为您完成这项工作。嗯,但在编译时,我不知道我将拥有多少实例。这就是我使用新操作符的原因。@user2175762向量将为您处理飞机的分配,就像您将新向量推到列表上时列表所做的那样。这两条台词在幕后有很多事情要做。谢谢,叶