C++ 映射 swap() 函数用于交换(或交换)两个映射的内容,但尽管大小可能不同,但两个映射必须是相同的类型。
用法
void swap (map& x);
参数
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() 函数用于交换两个映射的内容。
示例 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 已经被清除。
相关用法
- C++ map size()用法及代码示例
- C++ map lower_bound()用法及代码示例
- C++ map max_size()用法及代码示例
- C++ map begin()用法及代码示例
- C++ map rbegin()用法及代码示例
- C++ map key_comp()用法及代码示例
- C++ map end()用法及代码示例
- C++ map value_comp()用法及代码示例
- C++ map find()用法及代码示例
- C++ map upper_bound()用法及代码示例
- C++ map cbegin()用法及代码示例
- C++ map rend()用法及代码示例
- C++ map get_allocator用法及代码示例
- C++ map emplace()用法及代码示例
- C++ map crbegin()用法及代码示例
- C++ map cend()用法及代码示例
- C++ map erase()用法及代码示例
- C++ map crbegin()、crend()用法及代码示例
- C++ map at()用法及代码示例
- C++ map emplace_hint()用法及代码示例
注:本文由纯净天空筛选整理自 C++ map swap() function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。