一、借助临时变量
直观,但是需要额外的变量
void Swap(int &left, int &right)
{
int temp = left;
left = right;
right = left;
}
二、使用算术运算
不需要额外的变量,但是可能导致溢出
void Swap(int &left, int &right)
{
left += right;
right = left - right;
left = left - right;
}
三、使用异或
不够直观,但是不需要额外的变量,并且没有溢出的风险
void Swap(int &left, int &right)
{
left = left ^ right;
right = left ^ right;
left = left ^ right;
}
四、使用标准库函数(C++11)
最直观,并且适应范围广(适应于任何类型),但是需要C++11
#include <algorithm>
int left;
int right;
std::swap(left, right);