注册 登录
编程论坛 C++教室

函数模板如何理解

ruankui001 发布于 2009-09-18 15:31, 759 次点击
如何用函数模板实现max可以求两个参数,甚至更多参数的最大值
7 回复
#2
forclwy2009-09-18 20:27
模板实现两个参数的,可以
再实现更多参数的就要重写模板了。。
#3
shl3052009-09-18 23:37
可以用传数组的方式变通实现
用不定参数列表也可以实现,不过牵扯到的知识较深,再加上模板,OMG~~
#4
marketivacn2009-09-19 09:48
回复 楼主 ruankui001
多个参数的话是要用重载
#5
serious2009-09-19 23:55
这个程序是你要吗 ?
#include <cstdlib>
#include <cstdarg>
#include <iostream>
using namespace std;
template<typename T>
T _max(uint const n, ...)
{
    va_list others;
    va_start(others, n);
    T max = va_arg(others, T);
    for (uint i = 2; i <= n; ++i)
    {
        T const next = va_arg(others, T);
        max = next > max ? next : max;
    }
    va_end(others);
    return max;
}
int main()
{
    cout << _max<int>(1u, 1) << endl;
    cout << _max<int>(2u, 1, 2) << endl;
    cout << _max<double>(3u, 1., 3., 2.) << endl;
    cout << _max<double>(5u, 1., 5., 10., 2., 1.) << endl;
}



[ 本帖最后由 serious 于 2009-9-20 00:00 编辑 ]
#6
newCpp2009-09-20 07:21
就好比一模型!
做了一个实用物品后,还可以再去制作1
#7
ruankui0012009-09-24 14:01
谢谢!终于理解了!
#8
ruankui0012009-10-12 10:51
谢谢各位了!
1