C ++ map swap()函数用于交换(或交换)两个map的内容,但是两个map必须是相同类型的,尽管大小可能会有所不同。
void swap (map& x);
x:用于交换内容的map容器。
没有
让我们看一个简单的示例,将一个map的元素交换到另一个。
#include <iostream>
#include <map>
using namespace std;
int main(void) {
map<char, int> m1 = {
{'a', 1},
{'b', 2},
{'c', 3},
{'d', 4},
{'e', 5},
};
map<char, int> m2;
m2.swap(m1);
cout << "Map包含以下元素" << endl;
for (auto it = m2.begin(); it != m2.end(); ++it)
cout << it->first << " = " << it->second << endl;
return 0;
}
输出:
Map包含以下元素 a = 1 b = 2 c = 3 d = 4 e = 5
在上面的示例中,Map m1具有五个元素,而m2为空。当您将m1交换为m2时,m1的所有元素都将交换为m2。
让我们看一个简单的示例,交换两个map的内容。
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> map1,map2;
map1['x']=100;
map1['y']=200;
map2['a']=110;
map2['b']=220;
map2['c']=330;
map1.swap(map2);
cout << "map1 包含:\n";
for (map<char,int>::iterator it=map1.begin(); it!=map1.end(); ++it)
cout << it->first << " => " << it->second << '\n';
cout << "map2 包含:\n";
for (map<char,int>::iterator it=map2.begin(); it!=map2.end(); ++it)
cout << it->first << " => " << it->second << '\n';
return 0;
}
输出:
map1 包含: a => 110 b => 220 c => 330 map2 包含: x => 100 y => 200
在以上示例中,两个Map(即map1和map2)的内容相互交换。
让我们看一个简单的示例,交换两个map的内容。
#include<iostream>
#include<map>
using namespace std;
int main()
{
map<int, char> map1, map2;
map1[1] = 'a';
map1[2] = 'b';
map1[3] = 'c';
map1[4] = 'd';
map2[5] = 'w';
map2[6] = 'x';
map2[7] = 'y';
//交换map的元素
swap(map1, map2);
//打印map的元素
cout << "map1:\n"<< "\tKEY\tELEMENT\n";
for (auto it = map1.begin();
it != map1.end(); it++)
cout << "\t" << it->first << "\t" << it->second << '\n';
cout << "map2:\n"<< "\tKEY\tELEMENT\n";
for (auto it = map2.begin();
it != map2.end(); it++)
cout << "\t" << it->first << "\t" << it->second << '\n';
return 0;
}
输出:
map1:
KEY ELEMENT
5 w
6 x
7 y
map2:
KEY ELEMENT
1 a
2 b
3 c
4 d
在上面的示例中,另一种形式的swap()函数用于交换两个映射的内容。
让我们看一个简单的实例。
#include <iostream>
#include <string>
#include <map>
using namespace std;
void show(const char *msg, map<string, int> mp);
int main() {
map<string, int> m1, m2;
m1.insert(pair<string, int>("A", 100));
m1.insert(pair<string, int>("G", 300));
m1.insert(pair<string, int>("B", 200));
// 交换m1和m2的内容。
cout << "交换m1和m2。\n";
m1.swap(m2);
show("Contents of m2: ", m2);
show("Contents of m1: ", m1);
// Clear m1.
m1.clear();
if(m1.empty()) cout << "m1 为空.";
return 0;
}
// 使用迭代器显示map<string, int>的内容。
void show(const char *msg, map<string, int> mp) {
map<string, int>::iterator itr;
cout << msg << endl;
for(itr=mp.begin(); itr != mp.end(); ++itr)
cout << " " << itr->first << ", " << itr->second << endl;
cout << endl;
}
输出:
交换m1和m2。
m2内容:
A, 100
B, 200
G, 300
m1内容:
m1 为空.
在上面的示例中,Mapm1的内容被交换到Map m2,并且在交换Map m1 后已被清除。