模板函数参数的含义是什么

What is meaning of template function arguments?

本文关键字:是什么 参数 函数      更新时间:2023-10-16

我遇到了以下模板函数,

template<typename C, typename F = less<typename C::value_type>> void Sort(C& c, F f = F()){
    sort(C.begin(),c.end(),f);
}

现在,我寻找更少,它建议,

二进制函数对象类,其调用返回其第一个 参数的比较小于秒(由运算符 <返回)。>

在上面提到的功能中,什么是少用的?它只有一个参数。

谢谢。

No. 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 和int right)。

什么是少的用?它只有一个参数。

否,它只有一个模板参数。实际的函数调用本身采用两个参数,这两个参数(常量引用 IIRC)都是模板参数中指定的类型。