C/C++语言的点滴(一) -- 实现两个任意类型的数据的交换
C语言中没有C++的模板,因此我在实现两种任意类型的数据的交换时是使用预定义的方式
主要使用两种方法
1、使用加和减
#define swap(x,y) {x+=y;y=x-y;x=x-y;}
2、使用异或的方法
#define swap(x,y) {x^=y;y=x^y;x=x^y;}
原理基本一样 一中 y=x-y=(x+y)- y = x; x = (x +y)-x=y
1.2中有一个地方需要注意,x和y的地址不可以相同,就x,y不可以是同一个变量,如果是同一个变量则会使x变为0.
例如:
int a=20;
swap(a,a);
这是a的值会变为0.
C++中使用模板实现
template <class T>
void swap(T *x,T *y){
T temp;
temp=*x;*x=*y;*y=temp;
}