我遇到过以下模板功能,
template<typename C, typename F = less<typename C::value_type>> void Sort(C& c, F f = F()){
sort(C.begin(),c.end(),f);
}
现在,我在less寻找,并建议,
二进制函数对象类,其调用返回其是否为第一个 argument比较小于第二个(由运算符&lt;返回)。
在上面提到的功能中使用的是什么?它只有一个论点。
感谢。
答案 0 :(得分:4)
没有。 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),但有2个参数(int left&amp; int right)。
答案 1 :(得分:2)
什么是少用?它只有一个论点。
不,它只有一个模板参数。实际的函数调用本身有两个参数,两个参数(const references IIRC)是模板参数中指定的类型。