#include <iostream>
using namespace std;
/*宏定义交换*/
#define SWAP(a,b,t) ((t)=(a),(a)=(b),(b)=(t))
/*指针交换*/
void swap_p(int* a, int *b);
/*引用交换*/
void swap_r(int& a, int& b);
/*模板交换*/
template <class T>
void swap_t(T& a, T& b);
int main(){
int a, b, t;
a = 1;
b = 10;
cout << "交换前:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
/*****基本交换 - start******/
t = a;
a = b;
b = t;
/*****基本交换 - end******/
cout << "基本交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
/*指针交换*/
swap_p(&a, &b);
cout << "指针交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
/*引用交换*/
swap_r(a, b);
cout << "引用交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
/*宏交换*/
SWAP(a,b,t);
cout << "宏交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
/*模板交换*/
swap_t(a, b);
cout << "模板交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
/*
指针交换
*/
void swap_p(int* a, int* b){
int p;
p = *a;
*a = *b;
*b = p;
}
/*
引用交换
*/
void swap_r(int& a, int& b){
int t;
t = a;
a = b;
b = t;
}
/*
模板交换
*/
template <class T>
void swap_t(T& a, T& b){
T t;
t = a;
a = b;
b = t;
}