partial_sort_copy
partial_sort_copy
Category: algorithms
Component type: function
Prototype
Partial_sort_copy is an overloaded name; there are actually two partial_sort_copy
functions.
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);
Description
Partial_sort_copy copies the smallest N elements from the range
[first, last) to the range [result_first, result_first + N), where
N is the smaller of last - first and result_last - result_first.
The elements in [result_first, result_first + N) will be in ascending
order.
The two versions of partial_sort_copy differ in how they define whether one
element is less than another. The first version compares
objects using operator<, and the second compares objects using
a function object comp.
The postcondition for the first version of partial_sort_copy is as follows.
If i and j are
any two valid iterators in the range [result_first, result_first +
N) such that i precedes j, then *j < *i will be false.
The corresponding postcondition for the second version is that
comp(*j, *i) will be false.
The return value is result_first + N.
Definition
Defined in the standard header algorithm, and in the nonstandard
backward-compatibility header algo.h.
Requirements on types
For the first version:
InputIterator is a model of InputIterator.
RandomAccessIterator is a model of Random Access Iterator.
RandomAccessIterator is mutable.
The value types of InputIterator and RandomAccessIterator
are the same.
RandomAccessIterator's value type is LessThan Comparable.
The ordering relation on RandomAccessIterator's value type is
a strict weak ordering, as defined in the LessThan Comparable
requirements.
For the second version:
InputIterator is a model of InputIterator.
RandomAccessIterator is a model of Random Access Iterator.
RandomAccessIterator is mutable.
The value types of InputIterator and RandomAccessIterator
are the same.
StrictWeakOrdering is a model of Strict Weak Ordering.
RandomAccessIterator's value type is convertible to
StrictWeakOrdering's argument type.
Preconditions
[first, last) is a valid range.
[result_first, result_last) is a valid range.
[first, last) and [result_first, result_last) do not overlap.
Complexity
Approximately (last - first) * log(N) comparisons, where N is the
smaller of last - first and result_last - result_first.
Example
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".
Notes
See also
partial_sort,
sort,
stable_sort,
binary_search,
lower_bound,
upper_bound,
less<T>,
StrictWeakOrdering,
LessThan Comparable
Copyright ©
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
Wyszukiwarka
Podobne podstrony:
partial sortfunction pg copy tosort?m60 mod?PTM bubble sortsort?m60 modsort?p35 mod?sort?p35 modsort?m50 mod?Shack copyfunction imap mail copysortgroup partial convsort?m45 modsortwięcej podobnych podstron