直接交换数据

来源:互联网 发布:淘宝菲艺轩怎么样 编辑:程序博客网 时间:2024/04/30 18:42

问题:

         不借助第三个变量,两个变量直接进行数据交换。


代码:

template<typename _ty>void swap_ (_ty& a, _ty& b) {    //#if 1    a = a + b;    b = a - b;    a = a - b;#else    //    a = a ^ b;    b = a ^ b;    a = a ^ b;#endif}

调用演示:

int main() {    //    std::cout << __FILE__ << std::endl;    //    int i0 = 5, i1 = 6;    float f0 = 3.2, f1 = -1.8;    //    std::cout << "swap before:" << i0 << ", " << i1 << std::endl;    swap_<int> (i0, i1);    std::cout << "swap  after:" << i0 << ", " << i1 << std::endl;    //    std::cout << "swap before:" << f0 << ", " << f1 << std::endl;    swap_<float> (f0, f1);    std::cout << "swap  after:" << f0 << ", " << f1 << std::endl;    return 0;}

结果:

d:\mylaf\project\vs2013\project_code\testvirtualinputv2\mainvirtualinputv2.ccswap before:5, 6swap  after:6, 5swap before:3.2, -1.8swap  after:-1.8, 3.2


扩展:

       复杂类型的的直接数据交换。

1 0