标准库里的inplace_merge()函数

使用一个东西,不明白它的道理,不高明
——侯捷老师

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. 注意事项

  • 传入的两个序列必须是有序的

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/

你可能感兴趣的:(标准库里的inplace_merge()函数)