zoukankan      html  css  js  c++  java
  • 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;

    }

     

  • 相关阅读:
    开课博客
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    今天干了啥
    四则运算
    冲刺二(2)
    用户体验评价
    冲刺二(1)
  • 原文地址:https://www.cnblogs.com/cody1988/p/2162295.html
Copyright © 2011-2022 走看看