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);
}
ただし、2 つの整数を交換する XOR スワップ アルゴリズムがあります ( 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;
}
私の質問:
- それは最近の最適化ですか(
x86
またはarm
)? - C++ 標準はこの種の最適化を支持しますか?
std::swap
整数に特化した実際の STL 実装はありますか?