当前位置:网站首页>Variable parameter template implements max (accepts multiple parameters, two implementation methods)

Variable parameter template implements max (accepts multiple parameters, two implementation methods)

2022-06-24 11:34:00 Junmo vv

Imitative function implementation and recursive implementation

#include <iostream>

struct __Iter_less_iter
{
	template<typename iteraotr1,typename iterator2>
	bool operator() (iteraotr1 it1, iterator2 it2)
	{
		return *it1 < *it2;
	}
};

__Iter_less_iter __iter_less_iter() 
{
	return __Iter_less_iter();
}

template<typename Iterator,typename comp>
Iterator __max_element(Iterator first, Iterator last, comp cmp)
{
	if (first == last) {
		return first;
	}
	Iterator reslut = first;
	while (++first != last) { //last Is to point to the next position of the last element 
		if (cmp(reslut, first)) {
			reslut = first;
		 }
	}
	return reslut;
}


template<typename T>
T max_element(T first,T last)
{
	return __max_element(first, last, __iter_less_iter());
}



template <typename T>
T max(std::initializer_list<T> L)
{
	return *max_element(L.begin(), L.end());
}

template <typename T>
T maxnum(T& in)
{
	return in;
}

template <typename T,typename... Args>
T maxnum(T first, Args... args)
{
	return std::max(first, maxnum(args...));
}

int main()
{
	std::cout << max({ 23,42,44,22,11 }) << std::endl;
	std::cout << maxnum( 23,42,44,22,11 ) << std::endl;
	return 0;
}

原网站

版权声明
本文为[Junmo vv]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206241022387321.html