就是 这个 源码
源码 :
template<typename _ForwardIterator, typename _Tp, typename _Compare> // 模版参数
_ForwardIterator // 返回值
__lower_bound(_ForwardIterator __first, _ForwardIterator __last,
const _Tp& __val, _Compare __comp) // 声明 与 参数类型 // 大佬的 代码都是这么 对齐的吗? 看着真难受
{
typedef typename iterator_traits<_ForwardIterator>::difference_type
_DistanceType;
_DistanceType __len = std::distance(__first, __last);
while (__len > 0)
{
_DistanceType __half = __len >> 1;
_ForwardIterator __middle = __first;
std::advance(__middle, __half);
if (__comp(__middle, __val))
{
__first = __middle;
++__first;
__len = __len - __half - 1;
}
else
__len = __half;
}
return __first;
}
问题 :这个 函数调用的时候 我可以不写 参数 ,
lower_band<这里不用写参数,可以直接调用>(begin, end,val);
这不是 模版函数吗 ? 这是 怎么回事 ?