如何立即在向量中插入向量?

时间:2014-06-09 19:39:16

标签: c++ vector stl

我有一个元素类型为vector<int>的向量,我想快速插入这样的元素:

triangles.push_back(vector<int>(som1, som2, som3))

但是它不起作用,vector<int>的构造函数与参数列表不匹配。

有没有快速的方法,或者我必须创建一个临时的vector<int>变量,推回som1 som 2和som3,最后以三角形推回临时变量?

1 个答案:

答案 0 :(得分:1)

如果您不能使用C ++ 11初始化程序列表,则不会丢失所有内容。鉴于您的vector被命名为triangles,我将假设每个子向量始终包含三个int s。如果是这种情况,您可以使用帮助函数:

std::vector<int> MakeTriangle(int a, int b, int c)
{
   std::vector<int> triangle(3);
   triangle[0] = a;
   triangle[1] = b;
   triangle[2] = c;
   return triangle;
}

void f()
{
   std::vector<std::vector<int>> triangles;
   triangles.push_back(MakeTriangle(1, 2, 3));
}

对于更一般的问题,您可以编写一组MakeVector()函数模板,其中包含不同数量的参数,达到一定的合理限制(同样,如果您没有C ++ 11)。

如果你的项目有所提升,你也可以使用boost::assign。但是,为了解决这个问题,我不会拖动整个boost库。