標準ライブラリ<br>のinplace_merge()関数

1480 ワード

一つのものを使って、その道理が分からないで、上手ではありません--侯捷先生
1.関数宣言
// default(1)
    template
        void inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidrectionalIterator last)    
    
    // custom(2)
    template
        void inplace_merge(BidirectionalIterator first, BidirectionalIterator middle,
                           BidirectionalIterator last, Compare comp)

2.注意事項
  • から送信される2つのシーケンスは、秩序化された
  • でなければならない.
    3.プログラムの例
    bool mycomp(int i, int j) {
            return i < j;
        }
        void test_inplace_merge() {
            int arr1[] = {1,2,3,4,5};
            int arr2[] = {2,3,4,5,6};
            
            vector vec(10);
            
            std::sort(arr1, arr1+5);
            std::sort(arr2, arr2+5);
            
            auto it = std::copy(arr1, arr1+5, vec.begin());
            std::copy(arr2, arr2+5, it);
            
            std::inplace_merge(vec.begin(), vec.begin()+5, vec.end(), mycomp);
    //      std::sort(vec.begin(), vec.end());
            cout << "vec contains: ";
            for (auto &x : vec) {
                cout << x << " ";
            }
            cout << endl;
        }
    

    4.疑問点
    上記のプログラムのように、mycompがうまく使えないので、どのように使うかまだ分かりません.
    5.参照リンク
    https://blog.csdn.net/ruan875417/article/details/46004869 http://www.cplusplus.com/reference/algorithm/inplace_merge/