C++ 我可以使用insert函数将元素添加到向量向量中吗?

C++ 我可以使用insert函数将元素添加到向量向量中吗?,c++,vector,C++,Vector,我想知道,我是否可以使用insert关键字将元素添加到vector的vector? 例如,我有一个向量向量temp1对于此向量,元素添加到for循环的内部。在outfor循环的末尾,我需要将元素添加到temp1 vector<vector<int> >temp1; for (int a;a<size(),a++){//... vector<int> temp2; for (int b=0;b<closer_points;b++){

我想知道,我是否可以使用insert关键字将元素添加到
vector
vector

例如,我有一个
向量
向量temp1
对于此
向量
,元素添加到
for
循环的内部
。在out
for
循环的末尾,我需要将元素添加到
temp1

vector<vector<int> >temp1;
for (int a;a<size(),a++){//...
  vector<int> temp2;
  for (int b=0;b<closer_points;b++){

       // some steps here...

       vector<int> pt_no=mydata.Find_End_point(my_list,s1,s2);
       temp2=pt_no;
       }
  temp1[a].insert(temp1[a].end(),temp2.begin(),temp2.end());
  }

但是,这不起作用。有人能纠正这个吗,请

您需要使用
temp1.push_back(temp2)

问题: temp1[a].insert(temp1[a].end(),temp2.begin(),temp2.end())

恢复先前的答复: 要将一系列值附加到现有向量,请执行以下操作:

std::copy(temp2.begin(),temp2.end(), std::back_inserter(temp1));
要将范围作为新向量附加到现有向量或向量中的向量,请执行以下操作:

vector<vector<int> > vecvec;
vector<int> toappend;

// some steps :)
vecvec.push_back(toappend);

// or
vecvec.push_back(vector<int>(toappend.begin(), toappend.end());
向量向量; 出现的向量; //一些步骤:) 向后推(出现); //或 vecvec.push_back(向量(toappend.begin(),toappend.end());
包括
(如果您还没有)

更新 如果我这样说,我有一组点。我想把这些点分成向量,然后在最后把它们放到另一个向量中。所以,我的最终输出是向量的向量。例如,最终结果应该是((1,3),(4,6,9,8,21),(5,7,12),…)

好的,下面是:

// (
std::vector<std::vector<int> > vecvec;
// (1,3)
{
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(3);

    vecvec.push_back(vec);
}
// (4,6,9,8,21)
{
    std::vector<int> vec;
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(9);
    vec.push_back(8);
    vec.push_back(21);

    vecvec.push_back(vec);
}
// (5,7,12)
{
    std::vector<int> vec;
    vec.push_back(5);
    vec.push_back(7);
    vec.push_back(12);

    vecvec.push_back(vec);
}
// )
//  ....
... // (use vecvec)
//(
std::vector-vec;
// (1,3)
{
std::vec;
向量推回(1);
向量推回(3);
向后推(vec);
}
// (4,6,9,8,21)
{
std::vec;
向量推回(4);
向量推回(6);
向量推回(9);
向量推回(8);
向量推回(21);
向后推(vec);
}
// (5,7,12)
{
std::vec;
向量推回(5);
向量推回(7);
向量推回(12);
向后推(vec);
}
// )
//  ....
…/(使用vec)

什么不起作用?错误信息是什么?如果你想让我们查看你的代码,请正确格式化好吗?@larry-很抱歉没有插入我的全部代码。代码很长,但我更新了一些,我得到temp2的地方。(如果我因此造成任何不便或混乱,我真的很抱歉)@ G.NIRO:在这里,你需要缩进代码4空格以启用语法高亮显示和块模式。最好的是,只需突出显示代码并按Ctrl +K或在代码的顶部按下“代码> {} /代码>。):“代码”> INSERT <代码>不是C++中的关键字。这是一种基于
std::vector
的方法。此外,请考虑在键入代码行时偶尔使用空格键。它使它更具可读性。变量名也一样,它们不是以
temp
开头,而是表示它们包含的数据。@sehe,我想我不能确切地说出我需要什么,我需要将temp2的元素作为向量的向量添加到temp1中。所以,我的问题是,我是否可以使用insert函数,以及如何使用它。我尝试了上面的方法,但是没有得到答案。尽管我不清楚代码应该做什么,我还是添加了一些建议(也许除了问题行之外,尽量减少示例到工作代码中?@sehe;非常感谢您的进一步评论。但是,我仍然无法解决这个问题。如果我这样说;我有一套观点。我想把这些点分成向量,然后在最后把它们放到另一个向量中。所以,我的最终输出是向量的向量。例如,最终结果应该是((1,3),(4,6,9,8,21),(5,7,12),…)。那么,再给我一些提示吧。g_niro:
那么再给我一些提示吧
(打扰一下)<代码>'i have set of points'
-您如何表示这样的一个点?@sehe->谢谢,但您之前的解释是:total.push_back(vector(test.begin(),test.end());这是正确的。谢谢你。(我还有其他一些错误,这就是为什么我迟到了)这些价值观只是一个例子,用来解释我需要什么。因此,也可以使用以前的代码部分。谢谢
// (
std::vector<std::vector<int> > vecvec;
// (1,3)
{
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(3);

    vecvec.push_back(vec);
}
// (4,6,9,8,21)
{
    std::vector<int> vec;
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(9);
    vec.push_back(8);
    vec.push_back(21);

    vecvec.push_back(vec);
}
// (5,7,12)
{
    std::vector<int> vec;
    vec.push_back(5);
    vec.push_back(7);
    vec.push_back(12);

    vecvec.push_back(vec);
}
// )
//  ....
... // (use vecvec)