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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值