#include #include #include #include using namespace std; // Generic findMax, with a function object, C++ style. // Precondition: a.size( ) > 0. template const Object & findMax( const vector & arr, Comparator isLessThan ) { int maxIndex = 0; for( int i = 1; i < arr.size( ); i++ ) if( isLessThan( arr[ maxIndex ], arr[ i ] ) ) maxIndex = i; return arr[ maxIndex ]; } // Generic findMax, using default ordering. #include template const Object & findMax( const vector & arr ) { return findMax( arr, less( ) ); } class CaseInsensitiveCompare { public: bool operator( )( const string & lhs, const string & rhs ) const { return stricmp( lhs.c_str( ), rhs.c_str( ) ) < 0; } }; int main( ) { vector arr( 3 ); arr[ 0 ] = "ZEBRA"; arr[ 1 ] = "alligator"; arr[ 2 ] = "crocodile"; cout << findMax( arr, CaseInsensitiveCompare( ) ) << endl; cout << findMax( arr ) << endl; return 0; }