English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساسية

کنترل جریان C++

وظيفة C++

آرایه‌ها و رشته‌های C++

ساختارهای داده C++

کلاس‌ها و اشیاء C++

المراجع C++

الوراثة C++

دليل C++ STL

دستورالعمل C++

روش استفاده و مثال C++ map swap()

map (المحتويات) STL C++

C ++ map swap()این تابع برای تبادل محتوای دو map استفاده می‌شود، اما دو map باید از نوع یکسانی باشند، حتی اگر اندازه آنها متفاوت باشد.

نحوه استفاده

void swap(map& x);

پارامتر

x: برای مخزن محتوای تبادل استفاده می‌شود.

بازگشتی

بدون

مثال 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 شامل عناصر زیر است" << 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 تعیین می‌شوند.

مثال 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 شامل:\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) با یکدیگر مبادله شده‌اند.

مثال 3

دعونا مثالی ساده‌ای را بررسی کنیم، تبادل محتوای دو 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()函数用于交换两个映射的内容。

实例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));
  // 交换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 بعد تبادلها.

map (المحتويات) STL C++