C++ unordered_multimap::swap() 函数



C++ 的std::unordered_multimap::swap()函数用于交换第一个unordered_multimap与另一个unordered_multimap的内容。只有当unordered_multimap的元素类型相同时,才会进行交换。此函数不依赖于大小。

语法

以下是std::unordered_multimap::swap()函数的语法。

void swap(unordered_multimap<Key,T,Hash,Pred,Alloc>& first, unordered_multimap<Key,T,Hash,Pred,Alloc>& second);

参数

  • first − 第一个unordered_multimap对象。
  • second − 第二个相同类型的unordered_multimap对象。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

返回值

此函数不返回任何值。

示例 1

让我们来看下面的例子,我们将使用swap()函数在两个multimap之间进行交换。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<char, int> umm1 = { {'a', 1}, {'b', 2}, {'c', 3}, {'b', 4}, {'c', 5}, }; unordered_multimap<char, int> umm2 = { {'A', 1}, {'B', 2}, {'C', 3}, {'D', 4} }; cout << "umm1 contains following elements before swapping: " << endl; for (auto it = umm1.begin(); it != umm1.end(); ++it) cout << it->first << " = " << it->second << endl; cout << "umm2 contains following elements before swapping: " << endl; for (auto it = umm2.begin(); it != umm2.end(); ++it) cout << it->first << " = " << it->second << endl; swap(umm1, umm2); cout << "umm1 contains following elements after swapping: " << endl; for (auto it = umm1.begin(); it != umm1.end(); ++it) cout << it->first << " = " << it->second << endl; cout << "umm2 contains following elements after swapping: " << endl; for (auto it = umm2.begin(); it != umm2.end(); ++it) cout << it->first << " = " << it->second << endl; return 0; }

输出

如果我们运行上面的代码,它将生成以下输出:

umm1 contains following elements before swapping: 
c = 5
c = 3
b = 4
b = 2
a = 1
umm2 contains following elements before swapping: 
D = 4
C = 3
B = 2
A = 1
umm1 contains following elements after swapping: 
D = 4
C = 3
B = 2
A = 1
umm2 contains following elements after swapping: 
c = 5
c = 3
b = 4
b = 2
a = 1

示例 2

考虑另一种情况,我们将创建两个multimap,一个包含元素,另一个为空,并应用swap()函数将元素交换到空multimap中。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<char, int> umm1 = { {'a', 1}, {'b', 2}, {'c', 3}, {'b', 4}, {'c', 5}, }; unordered_multimap<char, int> umm2; swap(umm1, umm2); cout << "umm2 unordered multimap contains following elements" << endl; for (auto it = umm2.begin(); it != umm2.end(); ++it) cout << it->first << " = " << it->second << endl; return 0; }

输出

以下是上述代码的输出:

umm2 unordered multimap contains following elements
c = 5
c = 3
b = 4
b = 2
a = 1

示例 3

在下面的例子中,我们将使用两个multimap,并使用swap()函数相互交换两个multimap的元素。

Open Compiler
#include <iostream> #include <unordered_map> using namespace std; int main(void) { unordered_multimap<string, int> John = { {"CHE", 85}, {"PHY", 88}, {"MAT", 99}, {"CMS", 86}, {"ENG", 95} }; unordered_multimap<string, int> Bob = { {"PHY", 90}, {"CHE", 82}, {"MAT", 98}, {"CMS", 88} }; cout<<"Swapping the marks of first unordered multimap with second unordered_multimap"<<endl; swap(John, Bob); cout <<"John contains following marks after swapping: " << endl; for (auto & it: John) cout << it.first << " = " << it.second << endl; cout <<"Bob contains following marks after swapping: " << endl; for (auto & it: Bob) cout << it.first << " = " << it.second << endl; return 0; }

输出

上述代码的输出如下:

Swapping the marks of first unordered multimap with second unordered_multimap
john contains following marks after swapping: 
CMS = 88
MAT = 98
CHE = 82
PHY = 90
Bob contains following marks after swapping: 
ENG = 95
CMS = 86
MAT = 99
PHY = 88
CHE = 85
广告