STL algorithm演算法inplace_merge(24),stl演算法
inplace_merge原型:
std::inplace_merge
| default (1) |
template <class BidirectionalIterator> void inplace_merge (BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last); |
| custom (2) |
template <class BidirectionalIterator, class Compare> void inplace_merge (BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last, Compare comp); |
該函數是將[first,middle)和[middle,last)兩個已經有序的序列合并成一個有序的序列。
兩個小區間應該已經有序,並且都是使用同一定序。
注意的是first,middle,last都是在同一個容器裡面的,只是被分開成了兩個區間。
一個簡單的例子:
#include <iostream>#include <vector>#include <array>#include <algorithm>using namespace std;void inplacemerge(){ vector<int> vi{1,5,8,19,1,8,56}; cout<<"at first,vi="; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl; inplace_merge(vi.begin(),vi.begin()+4,vi.end()); cout<<"after inplace_merge(vi.begin(),vi.begin()+4,vi.end());,vi="<<endl;; for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";}); cout<<endl;}運行:
——————————————————————————————————————————————————————————————————
//寫的錯誤或者不好的地方請多多指導,可以在下面留言或者點擊左上方郵件地址給我發郵件,指出我的錯誤以及不足,以便我修改,更好的分享給大家,謝謝。
轉載請註明出處:http://blog.csdn.net/qq844352155
author:天下無雙
Email:coderguang@gmail.com
2014-9-16
於GDUT
——————————————————————————————————————————————————————————————————
為何STL中的algorithm採用全域函數實現,而不可以採用容器類的成員函數實現?
因為algorithm中的演算法是跨容器的、泛型的。
不僅不限於某一個容器,甚至任何實現介面的資料類型都可以使用。
int char這種基礎類型可以用,MyType自訂類型也可以用。容器也可以用
對於STL algorithm的for_each()第三個參數問題
......,print<int>);