返回n个数据中的最大值(va_list + 模板类)


因为自己程序的需要,发现之前还真没写过这种不定参数个数的函数和模板结合的东西,正好学习一下

(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 
#include 

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;
}

你可能感兴趣的:(c++,c++,算法,数据结构)