C++ unordered_set::swap() 函式



C++ 的std::unordered_set::swap()函式用於交換unordered_set的內容與其他unordered_set的內容。如果兩個unordered_set的內容相同,則什麼也不做;否則,將一個unordered_set的內容與另一個unordered_set的內容交換。此函式的返回型別為void,這意味著它不返回值。

語法

以下是std::unordered_set::swap()函式的語法:

void swap ( unordered_set& other);

引數

  • other − 另一個容器,用於交換內容。

返回值

此函式不返回值。

示例1

讓我們來看下面的例子,我們將交換num_set1的內容與num_set2的內容。

#include<iostream>
#include<string>
#include<unordered_set>
using namespace std;

int main () {
   //create unordered_sets
   unordered_set<int> num_set1 = {1, 2, 3, 4, 5};
   unordered_set<int> num_set2 = {6, 7, 8, 9, 10};
   cout<<"Contents of the num_set1 before swap operation: "<<endl;
   for(int n1 : num_set1){
      cout<<n1<<endl;
   }
   cout<<"Contents of the num_set2 before swap operation: "<<endl;
   for(int n2 : num_set2){
      cout<<n2<<endl;
   }
   //using the swap() function
   num_set1.swap(num_set2);
   cout<<"Contents of the num_set1 after swap operation: "<<endl;
   for(int n1 : num_set1){
      cout<<n1<<endl;
   }
   cout<<"Contents of the num_set2 after swap operation: "<<endl;
   for(int n2 : num_set2){
      cout<<n2<<endl;
   }
}

輸出

如果我們執行上面的程式碼,它將生成以下輸出:

Contents of the num_set1 before swap operation: 
5
4
3
2
1
Contents of the num_set2 before swap operation: 
10
9
8
7
6
Contents of the num_set1 after swap operation: 
10
9
8
7
6
Contents of the num_set2 after swap operation: 
5
4
3
2
1

示例2

考慮另一種情況,我們將考慮字元型別的unordered_set並應用swap()函式。

#include<iostream>
#include<string>
#include<unordered_set>
using namespace std;

int main () {
   //create unordered_sets
   unordered_set<char> char_set1 = {};
   unordered_set<char> char_set2 = {'a', 'b', 'c', 'd'};
   cout<<"Size of the char_set1 before swap operation: "<<char_set1.size()<<endl;
   cout<<"Contents of the char_set2 before swap operation: "<<endl;
   for(char c2 : char_set2){
      cout<<c2<<endl;
   }
   //using the swap() function
   char_set1.swap(char_set2);
   cout<<"Contents of the char_set1 after swap operation: "<<endl;
   for(char c1 : char_set1){
      cout<<c1<<endl;
   }
   cout<<"Size of the char_set2 after the swap operation: "<<char_set2.size();
}

輸出

以下是上述程式碼的輸出:

Size of the char_set1 before swap operation: 0
Contents of the char_set2 before swap operation: 
d
c
b
a
Contents of the char_set1 after swap operation: 
d
c
b
a
Size of the char_set2 after the swap operation: 0

示例3

在下面的例子中,我們將考慮字串型別的unordered_set,並應用swap()函式來交換unordered_set的內容。

#include<iostream>
#include<string>
#include<unordered_set>
using namespace std;

int main () {
   //create unordered_sets
   unordered_set<string> str_set1 = {"Red", "Blue", "Yellow", "White"};
   unordered_set<string> str_set2 = {"Apple", "Banana", "Mango", "Orange"};
   cout<<"Contents of the str_set1 before swap operation: "<<endl;
   for(string s1 : str_set1){
      cout<<s1<<endl;
   }
   cout<<"Content of the str_set2 before swap operation: "<<endl;
   for(string s2 : str_set2){
      cout<<s2<<endl;
   }
   //using swap() operation
   str_set1.swap(str_set2);
   cout<<"Contents of the str_set1 after swap operation: "<<endl;
   for(string s1 : str_set1){
      cout<<s1<<endl;
   }
   cout<<"Content of the str_set2 after swap operation: "<<endl;
   for(string s2 : str_set2){
      cout<<s2<<endl;
   }
}

輸出

上述程式碼的輸出如下:

Contents of the str_set1 before swap operation: 
White
Yellow
Blue
Red
Content of the str_set2 before swap operation: 
Mango
Banana
Orange
Apple
Contents of the str_set1 after swap operation: 
Mango
Banana
Orange
Apple
Content of the str_set2 after swap operation: 
White
Yellow
Blue
Red
廣告