gpt4 book ai didi

c++ - 为什么使用非限定 "std::swap"函数的这段代码可以编译?

转载 作者:行者123 更新时间:2023-11-28 06:52:18 26 4
gpt4 key购买 nike

在 .cpp 文件中,我实现了 bubble_sort 算法。在 bubble_sort 函数中,我使用 swap(a, b)。但是,我没有在此 cpp 文件中指定“使用 namespace 标准”。 (实际上这个 .cpp 文件中没有标题)我仍然可以在没有任何警告或错误的情况下编译程序。我知道如果我想在 bubble_sort 函数中使用一些常用函数,我至少需要在同一个文件中声明该函数。但是我不明白为什么我不需要为交换做任何事情。下面是我的 cpp 文件:

气泡排序.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() .

关于c++ - 为什么使用非限定 "std::swap"函数的这段代码可以编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23722846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com