C++中的swap函数
今天在看模板时发现了函数名引起的报错
代码如下:
#include<iostream>
using namespace std;
template<class T>
void swap(T &x,T &y)
{
T temp;
temp=x;
x=y;
y=temp;
}
int main()
{
char ch1='a';
char ch2='b';
swap(ch1,ch2);
cout<<ch1<<ch2;
}
[Error] call of overloaded 'swap(char&, char&)' is ambiguous
发生了二义性与std里的swap重名了,解决方法就是更改函数名
下面是std里面的swap函数用法
#include<iostream>
using namespace std;
/*C++中的swap函数:交换函数
好处:不用担心交换变量精度的缺失,无需构造临时变量,不会增加空间复杂度
swap 包含在命名空间std 里面
swap(a,b);(交换两个数)
swap(a[i] = b[j]);(交换两个位置上的变量)
*/
int main()
{
char ch1='a';
char ch2='b';
swap(ch1,ch2);
cout<<ch1<<" "<<ch2<<endl;
int a[5]={1,2,3,4,5};
swap(a[0],a[4]);
cout<<a[0]<<" "<<a[4]<<endl;
}
------------------------------eof------------------------------------------