stable_sort |
C++ Library |
template<class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last)
Sort all elements in the range [first, last) into ascending order. The relative order of equal elements is preserved.
The non-predicate version uses operator< for comparison.
template<class RandomAccessIterator, class BinaryPredicate> void sort(RandomAccessIterator first, RandomAccessIterator last, BinaryPredicate pr)
Sort all elements in the range [first, last) into ascending order. The relative order of equal elements is preserved.
The predicate version uses the predicate function pr for comparison.
#pragma warning(disable : 4786) #include <algorithm> #include <iostream> #include <functional> int main() { int array[6] = { 102, 425, 102, 34, 87, 34} ; std::ostream_iterator<int> intOstreamIt(std::cout, ", ") ; std::cout << "using non-predicate stable_sort" << std::endl ; std::cout << "\n\narray before sorting = " ; std::copy(array, array+6, intOstreamIt) ; std::cout << std::endl ; //stable_sort non-predicate version std::stable_sort(array, array+6) ; std::cout << "\n\narray after sorting = " ; std::copy(array, array+6, intOstreamIt) ; std::cout << std::endl ; std::random_shuffle(array, array+6) ; std::cout << "using predicate stable_sort" << std::endl ; std::cout << "\n\narray after random_shuffle = " ; std::copy(array, array+6, intOstreamIt) ; std::cout << std::endl ; //sort predicate version std::stable_sort(array, array+6, std::less<int>()) ; std::cout << "\n\narray after sorting = " ; std::copy(array, array+6, intOstreamIt) ; std::cout << std::endl ; return 0 ; }
using non-predicate stable_sort array before sorting = 102, 425, 102, 34, 87, 34, array after sorting = 34, 34, 87, 102, 102, 425, using predicate stable_sort array after random_shuffle = 102, 102, 34, 87, 425, 34, array after sorting = 34, 34, 87, 102, 102, 425,