insert比较好用,merge需要考虑size足够和大小排序。
两个 vector 怎么合并?_cau_eric的专栏-CSDN博客_vector合并
vector的insert方式:(以下为将vec1和vec2的内容合并到vec3中)
vector<string>vec1,vec2,vec3; //... vec1,vec2赋值 vec3.insert(vec3.end(),vec1.begin(),vec1.end()); vec3.insert(vec3.end(),vec2.begin(),vec2.end());
merge方式:
vector<string>vec1,vec2,vec3; //... vec1,vec2赋值 sort(vec1.begin(),vec1.end()); sort(vec2.begin(),vec2.end()); vec3.resize(vec1.size()+vec2.size()); merge(vec1.begin(),vec1.end(),vec2.begin(),vec2.end(),vec3.begin());
merge方式要注意三点:
1、vec1,和vec2需要经过排序,merge只能合并排序后的集合,不然会报错。
2、vec3需要指定好大小,不然会报错。
3、merge的时候指定vec3的位置一定要从begin开始,如果指定了end,它会认为没有空间,当然,中间的位置我没有试,回头有空试一下。
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解法:
class Solution { public: void reOrderArray(vector<int> &array) { int length = array.size(); int index = 0; vector<int> singles; vector<int> doubles; vector<int> ret; for(index = 0;index<length;index++) { if((array[index] & 1) != 0) singles.push_back(array[index]); else doubles.push_back(array[index]); } ret.insert(ret.end(), singles.begin(),singles.end()); ret.insert(ret.end(), doubles.begin(),doubles.end()); array=ret; } };