Xav*_*avi 0 c++ arrays sorting
为什么我们在通过 begin 和 end 迭代器对数组进行排序时必须放置 std,而向量、列表等情况并非如此?
例子:
std::sort( std::begin(array), std::end(array), [](int a,int b) { return a>b;} );
Run Code Online (Sandbox Code Playgroud)
这是由于参数依赖查找造成的。标准不保证vector迭代器允许您省略,但它是一个相当常见的实现细节。std::
如果 的结果类型std::vector::begin()是 中定义的类类型std,则将sort(vec.begin(), vec.end())查找stdforsort以及全局命名空间,并找到std::sort(全局命名空间中没有任何内容)。
的结果std::begin(array)是一个指针,它不是 from 的类型std,因此sort(std::begin(array), std::end(array))只在全局命名空间中查找,并且在那里找不到任何函数。
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |