-1

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;
}

既存のすべての実装を比較し、それらの適用範囲を理解しようとしています。

4

1 に答える 1