首页 > 代码库 > STL中的nth_element()方法的使用

STL中的nth_element()方法的使用

STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end)
方法可以使第n大元素处于第n位置(从0开始,其位置是下标为
n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,下面是这个方法的具体使用方法.

 1 #include <iostream> 2  3 #include <algorithm> 4  5 #include <functional> 6  7 #include <vector> 8  9 using namespace std;10 11 12 13 int main()14 15 {16 17     const int VECTOR_SIZE = 50 ;18 19 20 21     vector<int> Numbers(VECTOR_SIZE) ;22 23 24 25     vector<int>::iterator start, end, it ;26 27 28 29     // Initialize vector Numbers30 31     for(int i=0;i<50;++i){32 33              Numbers[i]=i;34 35     }36 37 /*由于赋值时是有序的,下面random_shuffle()方法将这些数据的顺序打乱*/38 39     random_shuffle(Numbers.begin(),Numbers.end());40 41     42 43 // location of first element of Numbers44 45     start = Numbers.begin() ; 46 47 48 49  // one past the location last element of Numbers50 51     end = Numbers.end() ;     52 53 54 55     cout << "Before calling nth_element/n" << endl ;56 57 58 59   // print content of Numbers60 61     cout << "Numbers { " ;62 63     for(it = start; it != end; it++)64 65         cout << *it << " " ;66 67     cout << " }/n" << endl ;68 69 70 71   /* 72 73     * partition the elements by the 8th element,74 75   *(notice that 0th is the first element)76 77   */ 78 79     nth_element(start, start+8, end) ;80 81 82 83     cout << "After calling nth_element/n" << endl ;84 85 86 87     cout << "Numbers { " ;88 89     for(it = start; it != end; it++)90 91         cout << *it << " " ;92 93     cout << " }/n" << endl ;94 95     system("pause");96 97 }

 

STL中的nth_element()方法的使用