关于 C++ template

学术版

Maxmilite @ 2021-07-03 17:10:39

萌新刚学 OI,如果要在 C++ 里实现这种可以传任意数量的参数的函数:

function(a, b, c, d, e, f, ...)

定义函数的时候 template 需要怎么写


by happybob @ 2021-07-03 18:47:05

@Maxmilite

#include <iostream>
using namespace std;

template<typename T> // 或者 template<class T> 

T func(T a, T b, T c)
{
    return a + b + c;
}

int main()
{
    double a = 1.1, b = 293.3, c = 93.3;
    int al = 1, bl = 2, cl = 3;
    cout << func(a, b, c) << endl;
    cout << func(al, bl, cl) << endl;
    return 0;
}

好用的话关注一下哦


by Maxmilite @ 2021-07-03 21:06:41

@给文明以岁月 感谢,可是我并不是需要这种啊.....


by happybob @ 2021-07-04 08:48:41

@Maxmilite

https://blog.csdn.net/i_chaoren/article/details/80460470

#include <iostream>
#include <algorithm>
using namespace std;

int maximun(int n) 
{
    return n;
}

template<typename...Args>
int maximun(int n, Args...args) 
{
    return max(n, maximun(args...));
}

int main()
{
    //C++11之后已经支持了多个数求最大值的操作,使用initializer_list
    //cout << max({ 57,48,60,100,20,18 });
    cout << maximun(57, 48, 60, 100, 20, 18) << endl;
    return 0;
}

by happybob @ 2021-07-04 08:52:13

@Maxmilite

#include <iostream>
using namespace std;

template<typename S>

S func(S a)
{
    return a;
}

template<typename T, typename... Ts> 

T func(T h, Ts... s)
{
    return h + func(s...);
}

int main()
{
    double a = 1.1, b = 293.3, c = 93.3;
    int al = 1, bl = 2, cl = 3, dl = 4;
    cout << func(a, b, c) << endl;
    cout << func(al, bl, cl, dl) << endl;
    return 0;
}

by happybob @ 2021-07-04 08:55:34

@Maxmilite

#include <iostream>
#include <string>
using namespace std;

template<typename S>

S func(S a)
{
    return a;
}

template<typename T, typename... Ts> 

T func(T h, Ts... s)
{
    return h + func(s...);
}

int main()
{
    double a = 1.1, b = 293.3, c = 93.3;
    int al = 1, bl = 2, cl = 3, dl = 4;
    cout << func(a, b, c) << endl;
    cout << func(al, bl, cl, dl) << endl;
    string s = "2", x = "392", t = "fdhd"; // 必须用string,因为默认是const char*,const char*没有加法操作 
    cout << func(s, x, t) << endl;
    return 0;
}

by Maxmilite @ 2021-07-04 14:34:48

@给文明以岁月 感谢


|