gpt4 book ai didi

c++ - 为什么排序函数在全局命名空间中?

转载 作者:太空狗 更新时间:2023-10-29 20:13:44 24 4
gpt4 key购买 nike

为什么C++的全局命名空间中会有sort函数?为什么这段代码可以编译?

#include <iostream>
#include <vector>

int main() {
std::vector<int> array(10);
sort(array.begin(), array.end());
}

PS: clang++ --std=c++11 --stdlib=libc++ ./test.cpp

最佳答案

sort 不在全局命名空间中,它在 std 中。但是,vector::begin() 可能 的结果类型也在 std 中(这取决于实现)。如果是这样,则 std::sort 由 ADL(参数相关查找)找到。

如果您不希望 ADL 找到 std::sort,那么您可以对 sort 进行合格的调用,而不是不合格的调用:::sort(array.begin(), array.end()).

关于c++ - 为什么排序函数在全局命名空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753759/

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