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;

    }

     

  • 相关阅读:
    Fusion access
    组网架构
    DHCP中继
    Vxlan配置
    redis多实例
    ansible实现redis角色
    ansible如何ssh免密链接(基于key验证)
    MySQL主从复制
    MySQL范例
    Ubuntu2004安装
  • 原文地址:https://www.cnblogs.com/cody1988/p/2162295.html
Copyright © 2011-2022 走看看