在许多应用程序中,都有交换相同类型的两个变量内容的需要。例如,在对整数数组进行排序时,将需要一个函数来交换两个变量的值,如下所示:

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> 头文件中声明。 swap函数把传入的两个变量的引用作为参数,指向的是两个变量的内存地址,使用后交换两个变量的实际值。

参考自 C++ swap函数模板及其用法

更多推荐