• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無(wú)以明志,非寧?kù)o無(wú)以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            STL算法(Algorithms):極值

            1、min:返回兩個(gè)兩個(gè)參數(shù)中的最小值
            原型:template <class T> const T& min ( const T& a, const T& b );
            template <class T, class Compare>
              const T& min ( const T& a, const T& b, Compare comp );
            示例:
            // min example
            #include <iostream>
            #include <algorithm>
            using namespace std;

            int main () {
            cout << "min(1,2)==" << min(1,2) << endl;
              cout << "min(2,1)==" << min(2,1) << endl;
              cout << "min('a','z')==" << min('a','z') << endl;
              cout << "min(3.14,2.72)==" << min(3.14,2.72) << endl;
              return 0;
            }
            2、max:返回兩個(gè)參數(shù)中的大值
            原型:
            template <class T> const T& max ( const T& a, const T& b );
            template <class T, class Compare>
              const T& max ( const T& a, const T& b, Compare comp );
            示例:
            // max example
            #include <iostream>
            #include <algorithm>
            using namespace std;

            int main () { cout << "max(1,2)==" << max(1,2) << endl;
              cout << "max(2,1)==" << max(2,1) << endl;
              cout << "max('a','z')==" << max('a','z') << endl;
              cout << "max(3.14,2.73)==" << max(3.14,2.73) << endl;
              return 0;
            }
            3、min_element:返回(迭代器)指定范圍內(nèi)的最小元素
            原型:
            // min_element/max_element
            #include <iostream>
            #include <algorithm>
            using namespace std;

            bool myfn(int i, int j) { return i<j; }

            struct myclass {
              bool operator() (int i,int j) { return i<j; }
            } myobj;

            int main () {
              int myints[] = {3,7,2,5,6,4,9};

              // using default comparison:
              cout << "The smallest element is " << *min_element(myints,myints+7) << endl;
              cout << "The largest element is " << *max_element(myints,myints+7) << endl;

              // using function myfn as comp:
              cout << "The smallest element is " << *min_element(myints,myints+7,myfn) << endl;
              cout << "The largest element is " << *max_element(myints,myints+7,myfn) << endl;

              // using object myobj as comp:
              cout << "The smallest element is " << *min_element(myints,myints+7,myobj) << endl; cout << "The largest element is " << *max_element(myints,myints+7,myobj) << endl;

              return 0;
            }
            4、max_element:返回(迭代器)指定范圍內(nèi)的最小元素
            原型:
            template <class ForwardIterator>
              ForwardIterator max_element ( ForwardIterator first, ForwardIterator last );

            template <class ForwardIterator, class Compare>
              ForwardIterator max_element ( ForwardIterator first, ForwardIterator last,
                                            Compare comp );
            示例:
            // min_element/max_element
            #include <iostream>
            #include <algorithm>
            using namespace std;

            bool myfn(int i, int j) { return i<j; }

            struct myclass {
              bool operator() (int i,int j) { return i<j; }
            } myobj;

            int main () {
              int myints[] = {3,7,2,5,6,4,9};

              // using default comparison:
              cout << "The smallest element is " << *min_element(myints,myints+7) << endl;
              cout << "The largest element is " << *max_element(myints,myints+7) << endl;

              // using function myfn as comp:
              cout << "The smallest element is " << *min_element(myints,myints+7,myfn) << endl;
              cout << "The largest element is " << *max_element(myints,myints+7,myfn) << endl;

              // using object myobj as comp:
              cout << "The smallest element is " << *min_element(myints,myints+7,myobj) << endl; cout << "The largest element is " << *max_element(myints,myints+7,myobj) << endl;

              return 0;
            }
            5、next_permutation:返回的是(序列中所有元素組合中的)一個(gè)
            原型:
            template <class BidirectionalIterator>
              bool next_permutation (BidirectionalIterator first,
                                     BidirectionalIterator last );

            template <class BidirectionalIterator, class Compare>
              bool next_permutation (BidirectionalIterator first,
                                     BidirectionalIterator last, Compare comp);
            示例:
            // next_permutation
            #include <iostream>
            #include <algorithm>
            using namespace std;
            
            int main () {
              int myints[] = {1,2,3};
            
              cout << "The 3! possible permutations with 3 elements:\n";
            
              sort (myints,myints+3);
            
              do {
                cout << myints[0] << " " << myints[1] << " " << myints[2] << endl;
              } while ( next_permutation (myints,myints+3) );
            
              return 0;
            }
            6、prev_permutation:和next_permutation功能類似,返回的是序列中(所有元素)前一個(gè)組合
            原型:
            <algorithm>
            template <class BidirectionalIterator>
              bool prev_permutation (BidirectionalIterator first,
                                     BidirectionalIterator last );
            
            template <class BidirectionalIterator, class Compare>
              bool prev_permutation (BidirectionalIterator first,
                                     BidirectionalIterator last, Compare comp);
            示例:
            // prev_permutation
            #include <iostream>
            #include <algorithm>
            using namespace std;
            
            int main () {
              int myints[] = {1,2,3};
            
              cout << "The 3! possible permutations with 3 elements:\n";
            
              sort (myints,myints+3);
              reverse (myints,myints+3);
            
              do {
                cout << myints[0] << " " << myints[1] << " " << myints[2] << endl;
              } while ( prev_permutation (myints,myints+3) );
            
              return 0;
            }
            7、lexicographical_compare:字典比較(針對(duì)的是兩個(gè)序列,返回的是布爾值)
            原型:
            template <class InputIterator1, class InputIterator2>
            bool lexicographical_compare ( InputIterator1 first1, InputIterator1 last1,
                                             InputIterator2 first2, InputIterator2 last2 );
            template <class InputIterator1, class InputIterator2, class Compare>
              bool lexicographical_compare ( InputIterator1 first1, InputIterator1 last1,
                                             InputIterator2 first2, InputIterator2 last2,
                                             Compare comp );
            示例:// lexicographical_compare example #include <iostream> #include <algorithm> #include <cctype> using namespace std; // a case-insensitive comparison function: bool mycomp (char c1, char c2) { return tolower(c1)<tolower(c2); } int main () { char first[]="Apple"; // 5 letters char second[]="apartment"; // 9 letters cout << "Using default comparison (operator<): "; if (lexicographical_compare(first,first+5,second,second+9)) cout << first << " is less than " << second << endl; else if (lexicographical_compare(second,second+9,first,first+5)) cout << first << " is greater than " << second << endl; else cout << first << " and " << second << " are equivalent\n"; cout << "Using mycomp as comparison object: "; if (lexicographical_compare(first,first+5,second,second+9,mycomp)) cout << first << " is less than " << second << endl; else if (lexicographical_compare(second,second+9,first,first+5,mycomp)) cout << first << " is greater than " << second << endl; else cout << first << " and " << second << " are equivalent\n"; return 0; }

             

            posted on 2012-01-08 16:54 Benjamin 閱讀(867) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 泛型編程

            評(píng)論

            # re: STL算法(Algorithms):極值[未登錄]  回復(fù)  更多評(píng)論   

            非淡泊無(wú)以明志
            2012-01-09 13:26 | 春秋十二月
            亚洲欧洲日产国码无码久久99| 精品久久久久久国产| 久久e热在这里只有国产中文精品99 | 国产精品久久网| 国产一区二区三精品久久久无广告 | 无码伊人66久久大杳蕉网站谷歌| 三上悠亚久久精品| 日韩一区二区久久久久久| 亚洲精品WWW久久久久久| 色综合久久久久综合体桃花网| 久久亚洲欧美日本精品| 久久精品国产福利国产琪琪| 色婷婷噜噜久久国产精品12p| 久久99热这里只有精品国产| 国产精品无码久久久久| 色狠狠久久AV五月综合| 日韩十八禁一区二区久久| 国产精品久久精品| 亚洲国产精品久久久天堂| 蜜桃麻豆www久久国产精品| 99久久中文字幕| 一本一本久久A久久综合精品| 国产女人aaa级久久久级| 国内精品久久久久影院日本 | 久久99精品久久久久久噜噜| 久久中文字幕人妻熟av女| 国产精品欧美亚洲韩国日本久久| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 久久香综合精品久久伊人| 久久只有这里有精品4| 人妻丰满?V无码久久不卡| 久久国产精品免费一区| 99久久精品免费观看国产| 精品综合久久久久久888蜜芽| 99久久99久久精品国产片果冻| 久久丝袜精品中文字幕| 久久精品国产99久久丝袜| 久久93精品国产91久久综合| 精品久久久久久99人妻| 亚洲欧美另类日本久久国产真实乱对白| 精品国产婷婷久久久|