好的,所以这有点复杂,我的语法记忆很糟糕......
我有一个列表,其中包含名为“Plane”的对象矢量。
下面:
std::list<std::vector<Plane>> possible_planes;
飞机是我制作的课程。 我现在要做的是添加新条目。 所以像这样:
possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i]));
这是我无法正确理解语法的地方。正确的语法是什么样的?
答案 0 :(得分:3)
您的代码在表达式中间声明一个变量,并在不应该的时候动态分配。试试这个:
possible_planes.push_back(std::vector<Plane>());
possible_planes.back().push_back(Plane(boundRect[i].area(), center[i]));
请注意,如果我知道您使用的是符合C ++ 11标准的工具链,则可以减少更多。
答案 1 :(得分:2)
1.首先创建新矢量,然后添加平面
possible_planes.push_back(std::vector<Plane>());
possible_planes.back().push_back(Plane(boundRect[i].area(), center[i]));
2。有这样的功能
std::vector<Plane> createNewPlaneVector(Plane& plane) {
std::vector<Plane> result;
result.push_back(plane);
return result;
}
然后你可以在一行中添加新的矢量
possible_planes.push_back(createNewPlaneVector(Plane(boundRect[i].area(), center[i])));
如果您使用的是C ++ 11,那么这会变得更简单:
possible_planes.push_back(std::vector<Plane>() { Plane(boundRect[i].area(), center[i]) } );
答案 2 :(得分:1)
也许尝试用多行和变量来做,如下所示:
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