Varidic Template(三)
迭代器的递归调用实现max功能,max函数接受任意参数
#include<iostream> using namespace std; struct _Iter_less_iter { template<typename _Iterator1 , typename _Iterator2> bool operator()(_Iterator1 _it1, _Iterator2 _it2) const { return *_it1 < *_it2; } }; template<typename _ForwardIterator> inline _ForwardIterator self_max_element(_ForwardIterator _first, _ForwardIterator _last) { return self_max_element(_first, _last, _Iter_less_iter()); } template<typename _ForwardIterator, typename _Compare> _ForwardIterator self_max_element(_ForwardIterator __first, _ForwardIterator __last, _Compare __comp) { if (__first == __last) return __first; _ForwardIterator __result = __first; while (++__first != __last) { if (__comp(__result, __first)) __result = __first; } return __result; } template<typename _Tp> inline _Tp self_max(initializer_list<_Tp> _l) { return *self_max_element(_l.begin(), _l.end()); } int main() { cout << self_max({57,48,60,100,20,18}) << endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)