C++ map swap() 函数
C++ map swap() 函数用于交换两个 map 的内容,但两个 map 必须是相同类型的,尽管大小可能不同。
语法
void swap (map& x);
参数
x : 用于交换内容的地图容器。
返回值
无
示例1
让我们看一个简单的示例,将一个地图的元素与另一个地图的元素进行交换。
#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 contains following elements" << endl;
for (auto it = m2.begin(); it != m2.end(); ++it)
cout << it->first << " = " << it->second << endl;
return 0;
}
输出结果:
Map contains following elements
a = 1
b = 2
c = 3
d = 4
e = 5
在上面的示例中,map m1有五个元素,而m2是空的。当你将m1交换到m2时,m1的所有元素都会被交换到m2中。
示例2
让我们看一个简单的示例来交换两个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 contains:\n";
for (map<char,int>::iterator it=map1.begin(); it!=map1.end(); ++it)
cout << it->first << " => " << it->second << '\n';
cout << "map2 contains:\n";
for (map<char,int>::iterator it=map2.begin(); it!=map2.end(); ++it)
cout << it->first << " => " << it->second << '\n';
return 0;
}
输出:
map1 contains:
a => 110
b => 220
c => 330
map2 contains:
x => 100
y => 200
在上面的示例中,两个地图的内容即map1和map2相互交换。
示例3
让我们看一个简单的示例来交换两个地图的内容。
#include<iostream>
#include<map>
using namespace std;
int main()
{
// Take any two maps
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';
// Swap elements of maps
swap(map1, map2);
// Print the elements of maps
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));
// Exchange the contents of m1 and m2.
cout << "Exchange m1 and m2.\n";
m1.swap(m2);
show("Contents of m2: ", m2);
show("Contents of m1: ", m1);
// Clear m1.
m1.clear();
if(m1.empty()) cout << "m1 is now empty.";
return 0;
}
// Display the contents of a map<string, int> by using an iterator.
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;
}
输出:
Exchange m1 and m2.
Contents of m2:
A, 100
B, 200
G, 300
Contents of m1:
m1 is now empty.
在上面的示例中,将map m1的内容交换到map m2中,交换后m1 map已被清空。