在.cpp文件中,我实现了bubble_sort算法。在bubble_sort函数中,我使用swap(a,b)。但是,我没有在此cpp文件中指定“使用名称空间标准”。 (实际上,此.cpp文件中没有标题)我仍然可以在没有任何警告或错误的情况下编译该程序。我知道,如果要在该bubble_sort函数中使用某些常规函数,则需要至少在同一文件中声明该函数。但是我不明白为什么我不需要为交换做任何事情。以下是我的cpp文件:
bubble_sort.cpp
template <typename Type>
void bubble_sort(Type* originarray, int lengthofarray)
{
int ii=lengthofarray-1;
while(ii>0)
{
for (int jj=0;jj<ii;jj++)
{
if (originarray[jj]>originarray[jj+1])
swap(originarray[jj],originarray[jj+1]);
}
ii--;
}
}
最佳答案
首先,要正确测试模板代码(至少使用MSVC),应实例化它。
此外,如果您尝试使用std
名称空间中的某个类编写代码,则编译器可以通过ADL (Koenig) lookup选择std::swap()
。