template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
template <class T> struct less {
bool operator() (const T& x, const T& y) const {return x<y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef bool result_type;
};
std::less<type> comp;
sort (first, last, comp);
sort( first, last, std::less< decltype(*first) >() );
#include <algorithm> // std::swap
class BubbleSort
{
public:
template< class RandomAccessIterator >
static void sort( RandomAccessIterator first, RandomAccessIterator last )
{
sort( first, last, std::less< decltype(*first) >() );
}
template< class RandomAccessIterator, class Compare >
static void sort( RandomAccessIterator first, RandomAccessIterator last, Compare comp )
{
for( auto i = first; i != last; i++ )
{
for( auto j = i + 1; j != last; j++ )
{
if( comp( *j, *i ) )
std::swap( *i, *j );
}
}
}
private:
BubbleSort(void);
~BubbleSort(void);
};
template< class RandomAccessIterator >
void sort( RandomAccessIterator first, RandomAccessIterator last )
{
sort( first, last, std::less< std::iterator_traits<randomaccessiterator>::value_type >() );
}
</randomaccessiterator>
Find more questions by tags C++
std::iterator_traits<randomaccessiterator>::value_type</randomaccessiterator>
- Frederick23 commented on October 3rd 19 at 02:53