// This code requires the IntCell.h/cpp code from the 02-cpp slide set #include <iostream> #include <vector> #include <string> #include "IntCell.h" using namespace std; template <typename Comparable> const Comparable & findMax (const vector<Comparable> & a) { int maxIndex = 0; for( int i = 1; i < a.size( ); i++ ) if( a[ maxIndex ] < a[ i ] ) // note the use of '<' maxIndex = i; return a[ maxIndex ]; } int main() { vector<int> v1(37); vector<double> v2(40); vector<string> v3(80); vector<IntCell> v4(75); v1.push_back(3); v1.push_back(7); v1.push_back(5); v2.push_back(3.14); v2.push_back(2.718); v2.push_back(-1.0); v3.push_back("aardvark"); v3.push_back("sloth"); v3.push_back("platypus"); v3.push_back("zebra"); v4.push_back(IntCell(3)); v4.push_back(IntCell(7)); v4.push_back(IntCell(5)); cout << findMax(v1) << endl; // ok: Comparable = int cout << findMax(v2) << endl; // ok: Comparable = double cout << findMax(v3) << endl; // ok: Comparable = string //cout << findMax(v4) << endl; // Illegal: no operator< return 0; }