#include #include #include "Doughnut.h" using namespace std; class EmptyVectorEx { public: EmptyVectorEx() : m_message("the vector is empty") { /* no code */ }; const char* what() const { return m_message; } private: const char *m_message; }; template void vsort(vector &data); int main() { vector v; v.push_back(17); v.push_back(3); v.push_back(12); v.push_back(1); v.push_back(22); v.push_back(5); cout << "Unsorted vector:" << endl; for (int i=0; i < v.size(); i++) cout << v[i] << " "; cout << endl << endl; try { vsort(v); } catch (EmptyVectorEx &e) { cout << "Error: " << e.what() << endl; } cout << "Sorted vector:" << endl; for (int i=0; i < v.size(); i++) cout << v[i] << " "; cout << endl << endl; vector u; u.push_back(17.0); u.push_back(13.2); u.push_back(1.75); u.push_back(0.32); u.push_back(27.45); u.push_back(5.0); try { vsort(u); } catch (EmptyVectorEx &e) { cout << "Error: " << e.what() << endl; } cout << "Sorted double vector (u):" << endl; for (int i=0; i < u.size(); i++) cout << u[i] << " "; cout << endl << endl; vector w; w.push_back("chris"); w.push_back("bobby"); w.push_back("angelica"); w.push_back("hermione"); w.push_back("harry"); try { vsort(w); } catch (EmptyVectorEx &e) { cout << "Error: " << e.what() << endl; } cout << "Sorted w vector:" << endl; for (int i=0; i < w.size(); i++) cout << w[i] << " "; cout << endl << endl; vector d; d.push_back( Doughnut::BostonCream ); d.push_back( Doughnut::Jelly ); d.push_back( Doughnut::Plain ); d.push_back( Doughnut::Fudgie ); d.push_back( Doughnut::Fudgie ); try { vsort(d); } catch (EmptyVectorEx &e) { cout << "Error: " << e.what() << endl; } cout << "Sorted d vector:" << endl; for (int i=0; i < d.size(); i++) cout << d[i] << endl; return 0; } template void vsort(vector &data) { if ( data.empty() ) throw EmptyVectorEx(); T tmpInt; for (int i = 0; i < data.size() - 1; i++) for (int j = data.size() - 2; j >= i; j--) if ( data[j] > data[j+1] ) { tmpInt = data[j]; data[j] = data[j+1]; data[j+1] = tmpInt; } }