STL 实现了一个通用std::swap
函数来交换 2 个值。可以通过以下方式呈现:
template <class T> void swap (T& a, T& b)
{
T c(std::move(a));
a=std::move(b);
b=std::move(c);
}
但是,有一个 XOR 交换算法来交换 2 个整数(http://en.wikipedia.org/wiki/XOR_swap_algorithm):
void swap_u( size_t& x, size_t& y )
{
x = x^y;
y = x^y;
x = x^y;
}
我的问题:
- 现在是优化(on
x86
还是arm
)? - C++ 标准是否支持这种优化?
- 在野外有没有
std::swap
专门针对整数的真正 STL 实现?