1、使用函数模板实现swap(&x,&y)交换两个实参变量a和b的指。
可以使用函数模板来实现交换两个实参变量的值,其代码如下所示:
template<typename T>
void swap(T& x, T& y) {
T tmp = x;
x = y;
y = tmp;
}
其中,template<typename T>
定义了一个模板,其中的 typename T
表示类型参数 T,表示这是一个通用的模板函数,可以支持不同类型的参数。函数体中先定义了一个临时变量 tmp
,然后将 x
的值赋给 tmp
,再将 y
的值赋给 x
,最后将 tmp
的值赋给 y
,从而实现了两个参数变量的交换。
使用方式非常简单,只需要将需要交换的两个变量传递给 swap
函数即可,例如:
int a = 1, b = 2;
swap(a, b);
// 此时 a=2,b=1
上述示例中,首先定义了两个整数变量 a
和 b
,然后调用了 swap
函数,将它们作为参数传递进去,函数内部会自动根据传入的参数类型进行模板实例化,然后执行交换操作。最后输出 a
和 b
的值,可以看到它们的值已经被交换了。
需要注意的是,为了让该函数支持自定义类型,你可能需要在类型定义中定义运算符重载函数。例如,如果想要支持自定义的结构体类型,你需要在结构体代码中定义 operator=
运算符重载函数来实现结构体赋值操作。
不知道是不是在这个意思,参考下哈!
void swap( int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=*temp;
}
int main()
{
int a=5, b=3;
swap(&a,&b);
printf("a=%d, b=%d\n",a,b);
}
参考如下:
template <typename T>
void swap(T& x, T& y) {
T t = x;
x = y;
y = t;
}