【发布时间】:2017-01-05 18:19:57
【问题描述】:
由于sort() 在namespace std 中定义,它必须始终用作std::sort。但是即使没有std,以下代码也能正确编译。
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> nums = {4,3,1,7,2,0};
sort(nums.begin(),nums.end());
}
但是这段代码没有。
#include <array>
#include <algorithm>
int main()
{
std::array<int,5> nums = {4,1,8,9,6};
sort(nums.begin(),nums.end());
}
使用 gcc 4.8.4 并启用 -std=c++11 标志。
从这两个代码 sn-ps 可以清楚地看出std::vector 与此有关。但我无法弄清楚。
【问题讨论】:
-
我正在考虑依赖于参数的查找。
-
请注意,第二个示例将使用 MSVC 编译,因为它为
std::array提供了自定义迭代器。