我遇到了以下模板功能,
template<typename C, typename F = less<typename C::value_type>> void Sort(C& c, F f = F()){
sort(C.begin(),c.end(),f);
}
现在,我在less中寻找,它表明,
二进制函数对象类,其调用返回其第一个参数的比较是否小于第二个(由运算符 < 返回)。
在上述功能中,less 有什么用?它只有一个论点。
谢谢。
不less
,没有 1 个论点。它有 1 个模板参数。这与 1 参数不同。它也是一个类而不是一个函数。更准确地说,它是一个functor
具有重载()
运算符的类,因此它可以用作函数。
考虑这样的实现
template<class T>
struct less
{
bool operator()(const T& left, const T& right) const
{
return (left < right);
}
};
less<int>
可以称为
less<int> f;
f(a,b);
其中 a 和 b 是int
s。
所以有一个模板参数(T == int),但有两个参数(int left & int right)。
少有什么用?它只有一个论点。
不,它只有一个模板参数。实际的函数调用本身有两个参数,两个参数(const 引用 IIRC)都是模板参数中指定的类型。