一、通用的函数交换模板
template<class T>
void swap(T &a,T &b)
{
T c(a);
a=b;
b=c;
}
T为类型,可根据实际需要使用相应的类型
二、针对int类型的优化
使用异或,整数异或本身为结果0;一个数异或0结果为本身;
void swap(int &a,int &b)
{
a^=b;
b^=a; //相当于b=a
a^=b; //相当于a=b
}
三、自定义swap时,注意事项
1、达不到交换的作用
void swap(int a,int b)
{
int temp=a;
a=b;
b=temp;
}
这里只是交换了a和b实参的副本,而它们本身没有交换。
2、能达到交换的作用
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
//使用
int main()
{
int a=1,b=2;
swap(&a,&b);
return 0;
}
注意,第三行中,不要将temp定义为一个指针,因为没有初始化指针而去使用它很危险。