C++ vector::swap() 函式



C++ vector::swap() 函式用於交換兩個向量的元素。向量長度不同並不構成問題。兩個向量只有在型別相同的情況下才能交換。swap() 函式的時間複雜度為常數。

vector 類的成員函式可以交換自身和另一個向量。演算法庫還包含各種名稱不同的 swap 函式,用於其他目的。演算法庫 swap 函式與 vector swap() 函式之間的主要區別在於,vector 函式將自身向量與另一個向量交換,而演算法庫 swap 函式則分別交換兩個獨立的向量。

語法

以下是 C++ vector::swap() 函式的語法:

void swap (vector& x);

引數

x - 表示另一個相同型別的向量,其內容將被交換。

示例 1

讓我們考慮以下示例,我們將使用 swap() 函式。

#include <iostream>
#include <vector>
using namespace std;

int main(){
   vector<int> tutorial1{11,22,33,44};
   vector<int> tutorial2{111,222,333,444};
   tutorial1.swap(tutorial2);
   cout << "vector1 Elements are : ";
   for (auto x = tutorial1.begin();
      x < tutorial1.end(); ++x)
   cout << *x << " ";
   cout << endl<< "vector2 Elements are : ";
   for (auto x = tutorial2.begin();
      x < tutorial2.end(); ++x)
   cout << *x << " ";
   return 0;
}

輸出

當我們編譯並執行上述程式時,將產生以下結果:

vector1 Elements are : 111 222 333 444 
vector2 Elements are : 11 22 33 44 

示例 2

考慮另一種情況,我們將使用兩個不同大小的向量並應用 swap() 函式。

#include <iostream>
#include <vector>
using namespace std;

int main(){
   vector<int> myvector1{12,23};
   vector<int> myvector2{34,45,56,67};
   myvector1.swap(myvector2);
   cout << "The vec1 elemets are:";
   for (int i = 0; i < myvector1.size(); i++)
      cout << ' ' << myvector1[i];
   cout << '\n';
   cout << "The vec2 elemets are:";
   for (int i = 0; i < myvector2.size(); i++)
      cout << ' ' << myvector2[i];
   cout << '\n';
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

The vec1 elemets are: 34 45 56 67
The vec2 elemets are: 12 23

示例 3

在以下示例中,我們將使用 char 型別並在迭代器之間應用 swap() 函式。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(){
   vector<char> myvector1 = {'T', 'P'};
   vector<char> myvector2 = {'W', 'E', 'L', 'C', 'O', 'M', 'E'};
   vector<char>::iterator x = myvector1.begin();
   vector<char>::iterator y = myvector2.begin();
   swap(x, y);
   for (x = x; x != myvector2.end(); x++) {
      cout << *x << ' ';
   }
   cout << endl;
   for (y = y; y != myvector1.end(); y++) {
      cout << *y << ' ';
   }
   cout << endl;
   return 0;
}

輸出

執行上述程式後,將產生以下結果:

W E L C O M E 
T P 
廣告