在C++ STL中使用unordered_map swap
std::unordered_map ::swap()是C++ STL中的内置函数,用于将一个容器的元素与另一个容器的元素交换。在调用此函数后,调用方unordered_map的元素将是被调用的unordered_map的元素,而被调用的unordered_map的元素将是调用方unordered_map的元素。
在内部,只有引用类型的unordered_map会发生交换。
语法
unordered_map.swap(unordered_map& ump)
返回类型:该函数的返回类型为void。
参数:另一个具有相同类型元素的unordered_map。
复杂度:其复杂度是常数。
示例1
// C++代码示例为方法服务
// unordered_map swap
#include< bits / stdc++.h>
使用命名空间std;
int main()
{
unordered_map<int,int> sample1, sample2;
//地图初始化
sample1 = {{2,2},{3,4},{4,6},{5,8}};
sample2 = {{10,11},{12,13},{14,15},{26,17}};
//在调用swap前打印详细信息
cout<<"调用swap之前的地图元素\n";
cout<<"第一张地图的元素是:\n";
for(auto& x:sample1)
cout<<x.first<<":"<<x.second<<endl;
cout<<"第二张地图的元素是:\n";
for(auto& x:sample2)
cout<<x.first<<":"<<x.second<<endl;
//交换
sample1.swap(sample2);
cout<<"调用swap之后的地图元素\n";
cout<<"第一张地图的元素是:\n";
for(auto& x:sample1)
cout<<x.first<<":"<<x.second<<endl;
cout<<"第二张地图的元素是:\n";
for(auto& x:sample2)
cout<<x.first<<":"<<x.second<<endl;
return 0;
}
调用swap之前的地图元素
第一张地图的元素是:
5:8
4:6
3:4
2:2
第二张地图的元素是:
14:15
26:17
12:13
10:11
调用swap之后的地图元素
第一张地图的元素是:
14:15
26:17
12:13
10:11
第二张地图的元素是:
5:8
4:6
3:4
2:2
示例2
// C++代码示例为方法服务
// unordered_map swap
#include< bits / stdc++.h>
使用命名空间std;
int main()
{
unordered_map<char,int> sample1, sample2;
//地图初始化
sample1 = {{'a',2},{'b',4},{'c',6},{'d',8}};
sample2 = {{'e',11},{'f',13},{'h',15}};
//在调用swap前打印详细信息
cout<<"调用swap之前的地图元素\n";
cout<<"第一张地图的元素是:\n";
for(auto& x:sample1)
cout<<x.first<<":"<<x.second<<endl;
cout<<"第二张地图的元素是:\n";
for(auto& x:sample2)
cout<<x.first<<":"<<x.second<<endl;
//交换
sample1.swap(sample2);
cout<<"调用swap之后的地图元素\n";
cout<<"第一张地图的元素是:\n";
for(auto& x:sample1)
cout<<x.first<<":"<<x.second<<endl;
cout<<"第二张地图的元素是:\n";
for(auto& x:sample2)
cout<<x.first<<":"<<x.second<<endl;
return 0;
}
交换前的maps元素
第一个map的元素为:
d : 8
c : 6
b : 4
a : 2
第二个map的元素为:
h : 15
f : 13
e : 11
交换后的maps元素
第一个map的元素为:
h : 15
f : 13
e : 11
第二个map的元素为:
d : 8
c : 6
b : 4
a : 2
注意:caller和called unordered_map应该包含相同类型的元素,否则将会得到编译时错误。