最近工作中用到了unordered_map的合并,现在把c++中两个常用容器vector和map的合并方法总结一下。
一、vector的合并
(1)insert()方法
#include
#include
using namespace std;
int main() {
vector v1;
vector v2;
for (int i = 0; i < 5; i++) {
v1.push_back(i); //v1的元素:0,1,2,3,4
v2.push_back(i + 2); //v2的元素:2,3,4,5,6
}
vector v3;
v3.insert(v3.end(), v1.begin(), v1.end());//将v1压入
v3.insert(v3.end(), v2.begin(), v2.end());//继续将v2压入
for (int i = 0; i < v3.size(); i++) {
cout << v3[i] << endl;//输出0,1,2,3,4,2,3,4,5,6
}
}
(2)merge()方法:merge() 函数用于将 2 个有序序列合并为 1 个有序序列,前提是这 2 个有序序列的排序规则相同(要么都是升序,要么都是降序)。
#include
#include
#include
using namespace std;
int main() {
vector v1;
vector v2;
for (int i = 0; i < 5; i++) {
v1.push_back(i); //v1的元素:0,1,2,3,4
v2.push_back(i + 2); //v2的元素:2,3,4,5,6
}
vector v3(10);//要提前确定v3的size
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
//以默认的升序排序作为排序规则
for (int i = 0; i < v3.size(); i++) {
cout << v3[i] << endl;//输出0,1,2,2,3,3,4,4,5,6
}
}
(3)set_union()方法
#include
#include
#include
#include
using namespace std;
int main() {
vector v1;
vector v2;
for (int i = 0; i < 5; i++) {
v1.push_back(i); //v1的元素:0,1,2,3,4
v2.push_back(i + 2); //v2的元素:2,3,4,5,6
}
vector v3;
set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v3));//带有去重和排序效果
for (int i = 0; i < v3.size(); i++) {
cout << v3[i] << endl;//输出0,1,2,3,4,5,6
}
}
二、map的合并
insert()方法
#include
#include
多个map合并,循环insert即可:
#include
#include