在.cpp文件中,我实现了bubble_sort算法。在bubble_sort函数内部,我使用swap(a,b)。但是,我没有在此cpp文件中指定“using name space std”。 (实际上这个.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--;
}
}
答案 0 :(得分:1)
首先,要正确测试模板代码(至少使用MSVC),您应该实例化。
此外,如果您使用std
命名空间中的某个类来尝试代码,编译器可以通过ADL (Koenig) lookup选择std::swap()
。