• <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:將兩個序列合并成一個新的序列,并對新的序列排序
            原型:
            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:將兩個序列合并成一個新的序列,并對新的序列進(jìn)行歸并排序(這兩個序列必須要進(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:測試是一個序列是否在另一個序列中
            原型:
            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:兩個序列的交集
            原型:
            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)  編輯 收藏 引用 所屬分類: 泛型編程

            品成人欧美大片久久国产欧美| 国内精品久久久久久久coent| 久久精品亚洲乱码伦伦中文| 91精品国产高清91久久久久久| 久久天天躁夜夜躁狠狠躁2022| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 久久久亚洲欧洲日产国码aⅴ| 国产激情久久久久久熟女老人| 日韩电影久久久被窝网| 久久久久99精品成人片三人毛片 | 久久精品中文字幕大胸| 久久久久18| 亚洲精品无码久久毛片| 一级A毛片免费观看久久精品| 思思久久99热免费精品6| 久久久这里有精品| 中文字幕人妻色偷偷久久| 久久亚洲私人国产精品vA| 91精品国产综合久久婷婷| 天天综合久久久网| 精品无码久久久久久久动漫| 狠狠精品干练久久久无码中文字幕| 久久久精品波多野结衣| 久久亚洲日韩看片无码| 久久精品无码午夜福利理论片| 国内精品久久人妻互换| 久久综合综合久久97色| 久久精品一区二区三区中文字幕 | 久久露脸国产精品| 久久笫一福利免费导航| 欧美亚洲色综久久精品国产| 国产精品毛片久久久久久久| 国产精品日韩深夜福利久久| 久久天天婷婷五月俺也去| 久久久久久国产精品免费无码| 伊人久久免费视频| 久久久午夜精品| 91精品免费久久久久久久久| 久久香综合精品久久伊人| 青青青青久久精品国产h| 国产免费久久精品99re丫y|