问题:
不借助第三个变量,两个变量直接进行数据交换。
代码:
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.cc swap before:5, 6 swap after:6, 5 swap before:3.2, -1.8 swap after:-1.8, 3.2扩展:
复杂类型的的直接数据交换。
