C++のswap関数
1044 ワード
次のコードは変数交換を実現します.
最初はこのswapがどのように2つの値の交換を実現するかを考えていましたが、mainのswapがstLライブラリのalgorithm関数ライブラリを呼び出していることに気づきました.カスタムswap関数ではなく、ほほほ.
統一してswapをchangeに改名した後にコンパイルすることができます
#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&)’