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;

}

 

 

 

posted @ 2011-09-01 17:56  誑逩の蝸犇  阅读(1540)  评论(0编辑  收藏  举报