在.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()

10-06 14:58