| 类别: 算法 | 组件类型: 函数 |
template <class InputIterator, class RandomAccessIterator>
RandomAccessIterator
partial_sort_copy(InputIterator first, InputIterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last);
template <class InputIterator, class RandomAccessIterator,
class StrictWeakOrdering>
RandomAccessIterator
partial_sort_copy(InputIterator first, InputIterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last, Compare comp);
这两个版本的partial_sort_copy在定义一个元素是否小于另一个元素的方式上有所不同。第一个版本使用operator<比较对象,第二个版本使用一个函数对象comp.
第一个版本的后续条件如下。如果partial_sort_copyij和是范围内的任何两个有效迭代器使得[result_first, result_first + N)在j之前是范围内的任何两个有效迭代器,则*j < *i将为false。第二个版本的相应后续条件是comp(*j, *i)将为false.
返回值为result_first + N.
int A[] = {7, 2, 6, 11, 9, 3, 12, 10, 8, 4, 1, 5};
const int N = sizeof(A) / sizeof(int);
vector<int> V(4);
partial_sort_copy(A, A + N, V.begin(), V.end());
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));
// The printed result is "1 2 3 4".