'swap' : none of 2 overload have a best conversion

来源:百度知道 编辑:UC知道 时间:2024/04/29 20:25:22
#include<iostream>
using namespace std;
template <class T>
int Search(T a[], int now, int all)
{
int min,j = now;
min = a[now];
for(int i = now + 1; i < all; i ++)
{
if(min > a[i])
{
min = a[i];
j = i;
}
}
return j;
}
template <class T>
void swap(int& a, int& b)
{
T p;
p = a;
a = b;
b = p;
}
template <class T>
void sort(T a[], int all)
{
int sea, now = 0;
for(int i = 0; i <= all - 1; i ++)
{
sea = Search(a, i, all);
swap(a[i],a[sea]);
}
}
void main()
{
int a[10] = {9,68,7,6,55,15,25,35,0,4};
for(int i = 0; i <= 9; i++)
cout << a[i] << endl;
cout << endl;
sort(a,10);
for( i = 0; i <= 9; i++)
cout << a[i] << endl;

}//该程序为什么把void swap(int& a, int& b)改为void swa

和原本的swap混淆了。不过不知道为什么会报这个错误。把swap换个名就好了,否则void swap(int, int)会有两个匹配。

namespace std里面有同名函数swap, 当然出错了,改个名字就行了?