/*is_sorted 检测指定范围是否已排序*/
/*is_sorted 检测指定范围是否已排序*/
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
int main(int argc, const char * argv[])
{
array<int, 4> foo = {2,4,1,3};
do {
prev_permutation(foo.begin(), foo.end());
cout<<"foo: ";
for (int& x:foo)
cout<<" "<<x;
cout<<endl;
} while (!is_sorted(foo.begin(), foo.end()));
return 0;
}
/*is_sorted_until 返回最大已排序子范围*/
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
int main(int argc, const char * argv[])
{
array<int, 4> foo = {2,4,1,3};
array<int, 4>::iterator it;
do {
prev_permutation(foo.begin(), foo.end());
cout<<"foo:";
for (int& x:foo)
cout<<" "<<x;
it = is_sorted_until(foo.begin(), foo.end());
cout <<" ( "<< (it - foo.begin())<<" elements sorted)"<<endl;
} while (it != foo.end());
return 0;
}
/*nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分*/
/*nth_element 部份排序指定范围中的元素,使得范围按给定位置处的元素划分*/
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool myfunction(int i ,int j){return (i < j);}
int main(int argc, const char * argv[])
{
int myints[] = {9,8,7,6,5,4,3,2,1};
vector<int> myvector(myints ,myints + 9);
vector<int>::iterator it;
//using default comparison (operator <):
partial_sort(myvector.begin(), myvector.begin() + 2, myvector.end());
//using function as comp
partial_sort(myvector.begin(), myvector.begin() + 4, myvector.end(), myfunction);
//print out content:
cout<<"myvector contains:";
for (it = myvector.begin(); it != myvector.end(); ++it)
cout<<" "<<*it;
cout<<endl;
return 0;
}