矢量push_back双打数组

时间:2016-05-27 07:40:05

标签: c++ arrays vector

所以我得到了一个多维数组的矢量。 使用此代码

创建向量
std::vector<std::array<double, 3>> matrix;

在此之后,向量用点和其他信息的xy坐标填充,并进行排序。这是必需的,所以我成为给定的2d模型的外形。要关闭模型的外形,我必须将第一个点的信息复制到矢量的末尾。 我知道,如果我有矢量矢量,我可以使用这样的代码。

matrix.push_back(std::vector<double>(3, 0));
int p = matrix.size()-1;        
matrix[p][0]=matrix[0][0];
matrix[p][1]=matrix[0][1];
matrix[p][2]=matrix[0][2];

由于我使用了数组向量,这似乎是错误的。我试着稍微修改一下这段代码。

matrix.push_back(std::array<double, 3>);

但是我收到错误消息:

  

class:std :: array错误:不允许输入类型名称

我正在使用VisualStudio 2012.有人可以告诉我,我做错了吗?

2 个答案:

答案 0 :(得分:3)

std::array是可复制的,因此如果您想将第一项复制到最后,请说:

matrix.push_back(matrix[0]);

至于您收到错误的原因,是因为您将类型名称传递给push_back而不是对象。

答案 1 :(得分:0)

matrix.push_back(std::array<double, 3>);语法错误。您只需在括号中使用类型名称,而不是对象。

例如,matrix.push_back(std::array<double, 3>{1.0, 2.0, 3.0});有效。