zoukankan      html  css  js  c++  java
  • 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

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








  • 相关阅读:
    Django: 项目实战从0开始---实现登录注册系统。(7)
    Django: 项目实战从0开始---实现登录注册系统。(6)
    Django: 项目实战从0开始---实现登录注册系统。(5)
    Django: 项目实战从0开始---实现登录注册系统。(4)
    Django: 项目实战从0开始---实现登录注册系统。(3)
    Django: 项目实战从0开始---实现登录注册系统。(2)
    Django: 项目实战从0开始---实现登录注册系统。(1)
    Centos 7: Python3运维脚本(查看服务器信息并发送邮件)
    vue 错误记录
    ide 下spingboot 实现热部署
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7190745.html
Copyright © 2011-2022 走看看