zoukankan      html  css  js  c++  java
  • STL algorithm算法min,min_element(35)

    min样板:

    std::min

    default (1)
    template <class T> const T& min (const T& a, const T& b);
    
    custom (2)
    template <class T, class Compare>
      const T& min (const T& a, const T& b, Compare comp);
    
    initializer list (3)
    template <class T> T min (initializer_list<T> il);
    template <class T, class Compare>
      T min (initializer_list<T> il, Compare comp);
    对于(1),返回两个元素中最小的那个,假设两者同样。则返回a.

    使用operator<或者comp进行比較。

    对于(3),返回最小的那个元素,假设有多个最小元素,则返回第一个。

    其行为类似于:

    2
    3
    
    template <class T> const T& min (const T& a, const T& b) {
      return !(b<a)?

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

    一个简单的样例:

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





    min_element原型:

    std::min_element

    default (1)
    template <class ForwardIterator>
      ForwardIterator min_element (ForwardIterator first, ForwardIterator last);
    
    custom (2)
    template <class ForwardIterator, class Compare>
      ForwardIterator min_element (ForwardIterator first, ForwardIterator last,
                                   Compare comp);

    返回值最大的元素的迭代器。假设有多个。则返回第一个。

    其行为类似于:

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

    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    void minelement(){
        vector<int> vi{1,1,2,3,4};
        cout<<" vi=";
        for(int i:vi)
            cout<<i<<" ";
        cout<<endl;
        cout<<"min_element(vi.begin(),vi.end())="<<*min_element(vi.begin(),vi.end())<<endl;
        cout<<"min_element(vi.begin(),vi.begin()+1)="<<*min_element(vi.begin(),vi.begin()+1)<<endl;
    }
    
    执行截图:



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

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

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

    author:天下无双

    Email:coderguang@gmail.com

    2014-9-17

    于GDUT

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






    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    bzoj 2733 [HNOI2012]永无乡
    CF550D Regular Bridge
    bzoj 1911 [Apio2010]特别行动队
    CF1137A/1138C Skyscrapers
    CF295C Greg and Friends
    CF1130E Wrong Answer
    bzoj 1029 [JSOI2007]建筑抢修
    iOS 流布局 UICollectionView使用(简单使用)
    Swift 学习笔记 (解决Swift闭包中循环引用的三种方法)
    Swift 学习笔记(面向协议编程)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4807864.html
Copyright © 2011-2022 走看看