C++ 我可以使用insert函数将元素添加到向量向量中吗?
我想知道,我是否可以使用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++){
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++){
// 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)