C++ Map swap()
C++ Map swap()函数
C++ Map swap()函数用于交换(或交换)两个 Map 的内容,但两者 Map 的类型必须相同,尽管大小可能会有所不同。
语法
参数
x : 与之交换内容的 Map 容器。
返回值
无
示例1
让我们看一个简单的示例,将一个 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 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
在上面的示例中,两个 Map 即map1和map2的内容彼此交换。
示例3
让我们看一个简单的示例交换两个 Map 的内容。
#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()函数用于交换两个 Map 的内容。
示例4
让我们看看简单的例子。
#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 之后。