Or login with:
#include <algorithm> template < class RandomAccessIterator > void nth_element( RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last ); template < class RandomAccessIterator, class BinaryPredicate > void nth_element( RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, BinaryPredicate comp );Parameters:
| Parameter | Description |
|---|---|
| first | A random-access iterator addressing the position of the first element in the range to be partitioned |
| last | A random-access iterator addressing the position one past the final element in the range to be partitioned |
| nth | A random-access iterator addressing the position of element to be correctly ordered on the boundary of the partition |
| comp | User-defined predicate function object that defines the comparison criterion to be satisfied by successive elements in the ordering. A binary predicate takes two arguments and returns true when satisfied and false when not satisfied |
first and the nth element in ascendant order. The
elements between the nth element and the last are not sorted, however no element in between the
nth and the last is smaller than an element between the first and the nth element.
The first version compares objects using operator< and the second compares objects using a function object comp.#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int a[] = {10, 2, 6, 11, 9, 3, 4, 12, 8, 7, 1, 5}; vector<int> v(a, a+12); cout <<"\nHere are the initial contents of the vector:\n"; for (vector<int>::size_type i=0; i<v.size(); i++) cout <<v.at(i)<<" "; cout <<"\nNow we make the following call:"; cout <<"\nnth_element(v.begin(), v.begin()+6, v.end());"; nth_element(v.begin(), v.begin()+6, v.end()); cout <<"\nAnd here are the contents of the vector partitioned around its 7th element:\n"; for (vector<int>::size_type i=0; i<v.size(); i++) cout<<v.at(i)<<" "; return 0; }
You must login to leave a messge