【C++】 vector 的合并
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; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)