• <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)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            STL算法(Algorithms):合并(Merge)

            1、merge:將兩個(gè)序列合并成一個(gè)新的序列,并對新的序列排序
            原型:
            template <class InputIterator1, class InputIterator2, class OutputIterator>
              OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,
                                     InputIterator2 first2, InputIterator2 last2,OutputIterator result );
            template <class InputIterator1, class InputIterator2,class OutputIterator, class Compare>
            OutputIterator merge ( InputIterator1 first1, InputIterator1 last1,
                                     InputIterator2 first2, InputIterator2 last2,OutputIterator result, Compare comp );
            示例:

            // merge algorithm example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);
              vector
            <int>::iterator it;

              sort (first,first
            +5);
              sort (second,second
            +5);
              merge (first,first
            +5,second,second+5,v.begin());

              cout 
            << "The resulting vector contains:";
              
            for (it=v.begin(); it!=v.end(); ++it)
                cout 
            << " " << *it;

              cout 
            << endl;
              
              
            return 0;
            }



            2、inplace_merge:將兩個(gè)序列合并成一個(gè)新的序列,并對新的序列進(jìn)行歸并排序(這兩個(gè)序列必須要進(jìn)過排序)
            原型:
            template <class BidirectionalIterator>
            void inplace_merge ( BidirectionalIterator first, BidirectionalIterator middle,
                                   BidirectionalIterator last );

            template <class BidirectionalIterator, class Compare>
             void inplace_merge ( BidirectionalIterator first, BidirectionalIterator middle,
                                   BidirectionalIterator last, Compare comp );
            示例:

            // inplace_merge example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);
              vector
            <int>::iterator it;

              sort (first,first
            +5);
              sort (second,second
            +5);

              copy (first,first
            +5,v.begin());
              copy (second,second
            +5,v.begin()+5);

              inplace_merge (v.begin(),v.begin()
            +5,v.end());

              cout 
            << "The resulting vector contains:";
              
            for (it=v.begin(); it!=v.end(); ++it)
                cout 
            << " " << *it;

              cout 
            << endl;
              
              
            return 0;
            }


             

            3、includes:測試是一個(gè)序列是否在另一個(gè)序列中
            原型:
            template <class InputIterator1, class InputIterator2>
            bool includes ( InputIterator1 first1, InputIterator1 last1,
                            InputIterator2 first2, InputIterator2 last2 );
            template <class InputIterator1, class InputIterator2, class Compare>
            bool includes ( InputIterator1 first1, InputIterator1 last1,
                            InputIterator2 first2, InputIterator2 last2, Compare comp );
            示例:

            // includes algorithm example
            #include <iostream>
            #include 
            <algorithm>
            using namespace std;

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

            int main () {
              
            int container[] = {5,10,15,20,25,30,35,40,45,50};
              
            int continent[] = {40,30,20,10};

              sort (container,container
            +10);
              sort (continent,continent
            +4);

              
            // using default comparison:
              if ( includes(container,container+10,continent,continent+4) )
                cout 
            << "container includes continent!" << endl;

              
            // using myfunction as comp:
              if ( includes(container,container+10,continent,continent+4, myfunction) )
                cout 
            << "container includes continent!" << endl;

              
            return 0;
            }


             

            4、set_union:和merge類似,不過新序列中沒有重復(fù)的元素
            原型:
            template <class InputIterator1, class InputIterator2, class OutputIterator> 
            OutputIterator set_union ( InputIterator1 first1, InputIterator1 last1,         
                                       InputIterator2 first2, InputIterator2 last2,OutputIterator result );
            template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare> 
            OutputIterator set_union ( InputIterator1 first1, InputIterator1 last1,
                                       InputIterator2 first2, InputIterator2 last2,OutputIterator result, Compare comp );
            示例:

            // set_union example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
              vector<int>::iterator it;

              sort (first,first
            +5);     //  5 10 15 20 25
              sort (second,second+5);   // 10 20 30 40 50

              it
            =set_union (first, first+5, second, second+5, v.begin());
                                                           
            // 5 10 15 20 25 30 40 50  0  0

              cout 
            << "union has " << int(it - v.begin()) << " elements.\n";

              
            return 0;
            }


             

            5、set_intersection:兩個(gè)序列的交集
            原型:
            template <class InputIterator1, class InputIterator2, class OutputIterator> 
            OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                                              InputIterator2 first2, InputIterator2 last2,OutputIterator result );
            template <class InputIterator1, class InputIterator2,class OutputIterator, class Compare>
            OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                                              InputIterator2 first2, InputIterator2 last2,OutputIterator result, Compare comp );
            示例:

            // set_intersection example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
              vector<int>::iterator it;

              sort (first,first
            +5);     //  5 10 15 20 25
              sort (second,second+5);   // 10 20 30 40 50

              it
            =set_intersection (first, first+5, second, second+5, v.begin());
                                                           
            // 10 20 0  0  0  0  0  0  0  0

              cout 
            << "intersection has " << int(it - v.begin()) << " elements.\n";

              
            return 0;
            }


             

            6、set_difference:序列(first1,last1)不在序列(first2,last2)中的元素
            原型:
            template <class InputIterator1, class InputIterator2, class OutputIterator> 
            OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                  InputIterator2 first2, InputIterator2 last2,outputIterator result );
            template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare> 
            OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                                              InputIterator2 first2, InputIterator2 last2,OutputIterator result, Compare comp );
            示例:

            // set_difference example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
              vector<int>::iterator it;

              sort (first,first
            +5);     //  5 10 15 20 25
              sort (second,second+5);   // 10 20 30 40 50

              it
            =set_difference (first, first+5, second, second+5, v.begin());
                                                           
            // 5 15 25  0  0  0  0  0  0  0

              cout 
            << "difference has " << int(it - v.begin()) << " elements.\n";

              
            return 0;
            }


             

            7、set_symmetric_difference:所有不在序列(first1,last1)和序列(first2,last2)中的元素
            原型:
            template <class InputIterator1, class InputIterator2, class OutputIterator> 
            OutputIterator    set_symmetric_difference ( InputIterator1 first1, InputIterator1 last1,
                                                         InputIterator2 first2, InputIterator2 last2,OutputIterator result );
            template <class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
            OutputIterator    set_symmetric_difference ( InputIterator1 first1, InputIterator1 last1,
                                                         InputIterator2 first2, InputIterator2 last2,OutputIterator result, Compare comp );
            示例:

            // set_symmetric_difference example
            #include <iostream>
            #include 
            <algorithm>
            #include 
            <vector>
            using namespace std;

            int main () {
              
            int first[] = {5,10,15,20,25};
              
            int second[] = {50,40,30,20,10};
              vector
            <int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
              vector<int>::iterator it;

              sort (first,first
            +5);     //  5 10 15 20 25
              sort (second,second+5);   // 10 20 30 40 50

              it
            =set_symmetric_difference (first, first+5, second, second+5, v.begin());
                                                           
            // 5 15 25 30 40 50  0  0  0  0

              cout 
            << "symmetric difference has " << int(it - v.begin()) << " elements.\n";

              
            return 0;
            }


            posted on 2012-02-05 21:33 Benjamin 閱讀(10113) 評論(0)  編輯 收藏 引用 所屬分類: 泛型編程

            色噜噜狠狠先锋影音久久| 久久久久久A亚洲欧洲AV冫| 国内精品久久久久久久97牛牛| 国内精品久久人妻互换 | 久久久久成人精品无码中文字幕 | 午夜视频久久久久一区| 久久人人爽人人爽人人片AV东京热| 久久精品国产亚洲av高清漫画| 91精品无码久久久久久五月天| 亚洲美日韩Av中文字幕无码久久久妻妇| 久久99精品久久久久子伦| 欧美精品九九99久久在观看| 精品久久久久久国产| 久久精品免费一区二区| 国产综合成人久久大片91| 99久久99久久| 久久精品国产亚洲av日韩| 久久久噜噜噜久久中文字幕色伊伊 | 狠狠色综合网站久久久久久久高清 | 久久青青草原精品影院| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久久久亚洲精品天堂久久久久久| 久久亚洲精精品中文字幕| 久久天天躁狠狠躁夜夜2020一| yellow中文字幕久久网| 国产高潮国产高潮久久久| 久久无码AV中文出轨人妻| 日本亚洲色大成网站WWW久久| 国产成人精品久久综合| 久久免费精品视频| 久久精品视频网| 精品无码久久久久国产| 久久久久久人妻无码| 国产人久久人人人人爽| 久久精品99久久香蕉国产色戒 | 久久久亚洲裙底偷窥综合| 欧美性大战久久久久久| 最新久久免费视频| 久久精品日日躁夜夜躁欧美| 亚洲色婷婷综合久久| 久久久久亚洲av无码专区导航|