• STL algorithm算法max,max_elements(33)


    max原型:

    std::max

    default (1)
    template <class T> const T& max (const T& a, const T& b);
    
    custom (2)
    template <class T, class Compare>
      const T& max (const T& a, const T& b, Compare comp);
    
    initializer list (3)
    template <class T> T max (initializer_list<T> il);
    template <class T, class Compare>
      T max (initializer_list<T> il, Compare comp);
    该函数返回范围或者两个数中最大的一个。

    对于(1),假设两个数相等,则返回a;

    其行为类似于:

    template <class T> const T& max (const T& a, const T& b) {
      return (a<b)?

    b:a; // or: return comp(a,b)?b:a; for version (2) }

    一个简单的样例:

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    void max2(){
       cout<<"max(10,22)="<<max(10,22)<<endl;
       cout<<"max({1,2,5,7,9,999,888})="<<max({1,2,5,7,9,999,888})<<endl;
    }
    
    
    执行截图:




    max_elements原型:

    std::max_element

    default (1)
    template <class ForwardIterator>
      ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
    
    custom (2)
    template <class ForwardIterator, class Compare>
      ForwardIterator max_element (ForwardIterator first, ForwardIterator last,
                                   Compare comp);
    返回范围内值最大那个元素的迭代器,假设存在多个同样最大值,则返回第一个。

    (max返回的是元素,这个返回的是迭代器)

    假设范围为空,则返回last.

    使用operator<进行比較。

    其行为类似于:

    template <class ForwardIterator>
      ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
    {
      if (first==last) return last;
      ForwardIterator largest = first;
    
      while (++first!=last)
        if (*largest<*first)    // or: if (comp(*largest,*first)) for version (2)
          largest=first;
      return largest;
    }
    一个简单的样例:

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    void maxelement(){
        vector<int> vi{1,1,2,3,4};
        cout<<"at first vi=";
        for(int i:vi)
            cout<<i<<" ";
        cout<<endl;
        cout<<"max_element(vi.begin(),vi.end())="<<*max_element(vi.begin(),vi.end())<<endl;
        cout<<"max_element(vi.begin(),vi.begin()+1)="<<*max_element(vi.begin(),vi.begin()+1)<<endl;
        if(max_element(vi.end(),vi.end())==vi.end())
            cout<<"max_element(vi.end(),vi.end())=vi.end()"<<endl;
    
    
    }
    
    执行结果:




    ——————————————————————————————————————————————————————————————————

    //写的错误或者不好的地方请多多指导。能够在以下留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足。以便我改动,更好的分享给大家,谢谢。

    转载请注明出处:http://blog.csdn.net/qq844352155

    author:天下无双

    Email:coderguang@gmail.com

    2014-9-17

    于GDUT

    ——————————————————————————————————————————————————————————————————








  • 相关阅读:
    poj 2488 DFS
    畅通工程 并查集模版
    KMP 模板
    poj 1426 DFS
    poj 2528 线段数
    poj 3468 线段数 修改区间(点)
    CVPR2012文章阅读(2)A Unified Approach to Salient Object Detection via Low Rank Matrix Recovery
    如何制定目标
    Saliency Map 最新综述
    计算机视觉模式识别重要会议杂志
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7190745.html
Copyright © 2020-2023  润新知