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
@给文明以岁月 感谢