前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Example 3, 4 of variadic templates

Example 3, 4 of variadic templates

原创
作者头像
ocean@32
修改2022-11-06 16:10:13
2020
修改2022-11-06 16:10:13
举报
文章被收录于专栏:C++ STL和泛型编程

Example 3: 处理一系列types相同的参数,采用initializer list,不必采用variadic templates

代码语言:txt
复制
struct maxCmp {
		template<typename Iterator>
		bool operator ()(const Iterator iter1, const Iterator iter2){
			return *iter1 < *iter2;
		}
}
maxCmp getMaxCmpObj() {
	return maxCmp();
}
template<typename Iterator, typename Cmp>
Iterator _getMaxData(Iterator begin, Iterator end, Cmp cmp) {
	Iterator maxValue = begin;
	while(begin != end) {
		if (cmp(maxValue , begin))
			maxValue = begin;
	}
	begin++;
}
	return maxValue ;
}

template<typename Iterator>
Iterator getMaxData(Iterator begin, Iterator end) {
	return _getMaxData(begin, end, getMaxCmpObj());
}

template<typename _TP>
inline _TP Max(initializer_list<_TP> _l) {
	return  *getMaxData(_l.begin(), _l.end());
}

Example 4 max也可以使用variadic templates实现;注意该递归函数最先处理的最后面的参数,然后依次向前。

代码语言:txt
复制
int maximum(int n) {
	return n;
}

template<typename... types>
int maximum(int n, types... arg) {
	return std::max(n, maximum(arg...));
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档