本文用于收录sindar在学习时遇到的不好归类又因太简单而难以成文的神奇小技巧,不定时更新
1.swap
虽然c++提供了swap函数,但有的语言却需要自己写swap,这时常见的做法便是使用一个中间量。
void swap(int &a,int&b)
{
int tmp=a;
a=b;
b=tmp;
}
但是如果要节约空间,那就要考虑别的做法,比如使用加/减法。
void swap(int &a,int &b)
{
a=a+b;//a:a+b; b:b;
b=a-b;//a:a+b; b:a;
a=a-b;//a:b; b:a;
}
但是这种做法有可能超出int范围,所以可以考虑用位运算。
void swap(int &a,int&b)
{
a=a^b;//a:a^b; b:b;
b=a^b;//a:a^b; b:a;
a=a^b;//a:b; b:a;
}