English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map swap()این تابع برای تبادل محتوای دو map استفاده میشود، اما دو map باید از نوع یکسانی باشند، حتی اگر اندازه آنها متفاوت باشد.
void swap(map& x);
x: برای مخزن محتوای تبادل استفاده میشود.
بدون
دعونا مثالی سادهای را بررسی کنیم، که یک عنصر 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، وقد تم حذف Mapm1 بعد تبادلها.