C++のswap関数

1044 ワード

次のコードは変数交換を実現します.
#include<iostream>

using namespace std;

struct Test{
        int a;
        char b;
};

template<class T>
void swap(T *a, T *b){
        *a = *a + *b;
        *b = *a - *b;
        *a = *a - *b;
}
int main()
{
        Test t1,t2;
        t1.a = 3;
        t1.b = 'a';
        t2.a = 4;
        t2.b = 'b';

        swap(t1, t2);
        cout << t1.a << " " << t1.b << endl;
        cout << t2.a << " " << t2.b << endl;

}

最初はこのswapがどのように2つの値の交換を実現するかを考えていましたが、mainのswapがstLライブラリのalgorithm関数ライブラリを呼び出していることに気づきました.カスタムswap関数ではなく、ほほほ.
統一してswapをchangeに改名した後にコンパイルすることができます
root:~/test # g++ a.cpp
a.cpp: In function ‘int main()’:
a.cpp:24: error: no matching function for call to ‘change(Test&, Test&)’