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;
}
复制代码

 

posted @   王清河  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示