为了账号安全,请及时绑定邮箱和手机立即绑定

关于在C++中vector如何拼接的问题!

关于在C++中vector如何拼接的问题!

函数式编程 2021-10-27 19:15:45
大体意思是如两个vector<int>vector1元素为{1,2,3}vector2元素为 {5,4,3}想要得到vector3{1,2,3,5,4,3}应该怎么样做?明显vector3=vector1+vector2是不可以的vector3.push_back(vector1);也是不可行的如果用set_union顺序会乱掉难道一定只有扫一遍过去一个个元素push_back……还有为什么下面这一行也不能编译?for_each(vector1.begin(),vector1.end(),vector3.push_back);
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

可以将其他vector合并到一个vector中,用vector的insert方法详细如下:
iterator insert(
iterator _Where,
const Type& _Val
);
void insert(
iterator _Where,
size_type _Count,
const Type& _Val
);
template<class InputIterator>
void insert(
iterator _Where,
InputIterator _First,
InputIterator _Last
);
例子如下(使用了第三种定义):
vector <int> v1;
vector <int> v2;
vector <int> v3;
v3.insert(v3.end(), v1.begin(), v1.end());




查看完整回答
反对 回复 2021-10-31
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

可以这样b.insert(b.begin(),a.begin(),a.end());最后有例子程序

for_each(vector1.begin(),vector1.end(),vector3.push_back);失败是因为最后一个参数要求一个函数对象,不是一个函数指针的问题吧

这里的函数对象是指一个重载了operator()()的类的实例

int main(void)
{
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);

vector<int> b;
b.push_back(4);
b.push_back(5);
b.push_back(6);

b.insert(b.begin(),a.begin(),a.end());

for(int i=0;i<b.size();i++)
cout<<b[i];
return 0;
}



查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 1352 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信