猿问

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

大体意思是如两个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);

函数式编程
浏览 1353回答 2
2回答

慕莱坞森

可以将其他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());

有只小跳蛙

可以这样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;}
随时随地看视频慕课网APP
我要回答