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

时间:2014-01-11 10:37:59

标签: c++ syntax-error

好的,所以这有点复杂,我的语法记忆很糟糕......

我有一个列表,其中包含名为“Plane”的对象矢量。

下面:

std::list<std::vector<Plane>> possible_planes;

飞机是我制作的课程。 我现在要做的是添加新条目。 所以像这样:

possible_planes.push_back(std::vector<Plane> new Plane(boundRect[i].area(), center[i]));

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

3 个答案:

答案 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