當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ map swap()用法及代碼示例


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 swap() function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。