关于swap
的那些事
我咋知道——就怪了。
某.cpp
: 超空间,但是因为swap
的中间变量!
咋办?
template <class T>
inline void swap(T &a, T &b)
{
a = a + b;
b = a - b;
a = a - b;
}
某.cpp
の作者:咋这么长捏?
template <class T>
inline void swap(T &a, T &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
某.cpp
の作者:咋还是这么长捏?
代代嘛!
template <class T> inline void swap(T &a, T &b) { a ^= b ^= a ^= b; }
???
剧情为本人虚编,请勿当真。
那么,a ^= b ^= a ^= b
是个啥?
令A = a, B = b
,
A = A ^ B = a ^ b
B = B ^ A = b ^ (a ^ b) = a
A = A ^ B = (a ^ b) ^ a = b
6