因为自己程序的需要,发现之前还真没写过这种不定参数个数的函数和模板结合的东西,正好学习一下
(n指定个数)
template <class T>
T findMax(int n, T others...)
{
va_list arg_ptr;
va_start(arg_ptr, others);
T maxNum = va_arg(arg_ptr, T);
for (int i = 1; i < n; ++i) {
T tmp = va_arg(arg_ptr, T);
maxNum = maxNum > tmp ? maxNum : tmp;
}
va_end(arg_ptr);
return maxNum;
}
再贴一下完成的测试例子吧,有需要的也可以改下自己试一下
#include <iostream>
#include <cstdarg>
template <class T>
T findMax(int n, T others...)
{
va_list arg_ptr;
va_start(arg_ptr, others);
T maxNum = va_arg(arg_ptr, T);
for (int i = 1; i < n; ++i) {
T tmp = va_arg(arg_ptr, T);
maxNum = maxNum > tmp ? maxNum : tmp;
}
va_end(arg_ptr);
return maxNum;
}
int main()
{
std::cout << "Hello World!\n";
std::cout << "Hello World!\n" << findMax(8, 50, 651, 651, 1, 681, 84, -1561, 3) << std::endl;
std::cout << "Hello World!\n" << findMax(4, 0.5,-8.9,18.98, 8) << std::endl;
}