STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end)
方法可以使第n大元素处于第n位置(从0开始,其位置是下标为
n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,下面是这个方法的具体使用方法.
#include <iostream> #include <algorithm> #include <functional> #include <vector> using namespace std; int main() { const int VECTOR_SIZE = ; vector<int> Numbers(VECTOR_SIZE) ; vector<int>::iterator start, end, it ; // Initialize vector Numbers for(int i=;i<;++i){ Numbers[i]=i; } /*由于赋值时是有序的,下面random_shuffle()方法将这些数据的顺序打乱*/ random_shuffle(Numbers.begin(),Numbers.end()); // location of first element of Numbers start = Numbers.begin() ; // one past the location last element of Numbers end = Numbers.end() ; cout << "Before calling nth_element/n" << endl ; // print content of Numbers cout << "Numbers { " ; for(it = start; it != end; it++) cout << *it << " " ; cout << " }/n" << endl ; /* * partition the elements by the 8th element, *(notice that 0th is the first element) */ nth_element(start, start+, end) ; cout << "After calling nth_element/n" << endl ; cout << "Numbers { " ; for(it = start; it != end; it++) cout << *it << " " ; cout << " }/n" << endl ; system("pause"); }