swap
すべての関数の実装をカバーしようとしています。
関数の次の実装ではswap
、2 つのパラメーターの値を交換するための一時変数は必要ありません。
void swapNoTemp1(int &a, int &b){
a = a + b;
b = a - b;
a = a - b;
}
また
template <class T>
void swapNoTemp2(T& i, T& j){
i -= j;
j += i;
i = (j - i);
}
また
void swapNoTemp3(int &a, int &b){
a ^= b;
b ^= a;
a ^= b;
}
したがって、使用メモリに関しては、次の場合よりも効果的です。
void swap(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
一方、swap
次を使用して実装できます。
void swapPointers(int *i, int *j) {
int t = *i;
*i = *j;
*j = t;
}
既存のすべての実装を比較し、それらの適用範囲を理解しようとしています。