C語言中文網 目錄
首頁 > 編程筆記 > C++筆記 閱讀:860

C++ swap函數模板及其用法

在許多應用程序中,都有交換相同類型的兩個變量內容的需要。例如,在對整數數組進行排序時,將需要一個函數來交換兩個變量的值,如下所示:
void swap(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}
而在對一個數組字符串對象進行排序的時候,會需要以下函數:
void swap(string &a, string &b)
{
    string temp = a;
    a = b;
    b = temp;
}
因為這兩個函數中代碼的唯一區別就是被交換的變量的類型,所以這兩個函數的邏輯與所有其他類似函數的邏輯都可以使用同一個模板函數來表示:
template<class T>
void swap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}
這樣的模板函數在標準 C++ 編譯器附帶的庫中可用。該函數在 <algorithm> 頭文件中聲明。

下面的程序演示了如何使用這個庫模板函數來交換兩個變量的內容:
// This program demonstrates the use of the swap function template.
#include <iostream>
#include <string>
#include <algorithm> // Needed for swap
using namespace std;

int main ()
{
    // Get and swap two chars
    char firstChar, secondChar;
    cout << "Enter two characters: ";
    cin >> firstChar >> secondChar;
    swap(firstChar, secondChar);
    cout << firstChar << " " << secondChar << endl;
    // Get and swap two ints
    int firstInt, secondInt;
    cout << "Enter two integers: ";
    cin >> firstInt >> secondInt;
    swap(firstInt, secondInt);
    cout << firstInt << " " << secondInt << endl;
    // Get and swap two strings
    cout << "Enter two strings: ";
    string firstString, secondString;
    cin >> firstString >> secondString;
    swap(firstString, secondString);
    cout << firstString << " " << secondString << endl;
    return 0;
}
程序輸出結果:

Enter two characters: a b
b a
Enter two integers: 12 45
45 12
Enter two strings: http://www.frifeb11.com cyuyan
cyuyan http://www.frifeb11.com

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo