template < typename T > void ToyBox < T >::PrintBoxSummary( ostream & out ) const { //prints the number of items in the box out << endl << "ToyBox Contents" << endl; out << "--------------" << endl; out << "The ToyBox contains " << m_numToys << " of a possible "; out << m_capacity << " items" << endl; if( m_numToys > 0) { //prints out the number of distinct items in the box out << endl << "There are " << NumDistinctItems(); out << " distinct items" << endl; for( unsigned int i = 0; i < m_toys.size(); i++ ) { out << endl << m_toys.at(i).GetShape() << ", "; out << m_toys.at(i).GetColor(); } } } //Function: NumDistinctItems //Description: Returns the number of distinct items in the ToyBox template < typename T > int ToyBox < T >::NumDistinctItems( ) { int size = m_toys.size(); int distinct = 0; bool found = false; vector AlreadyCounted; //check every toy against a vector that contains toys already seen for( int i = 0; i < size; i++ ) { for( unsigned int j = 0; j < AlreadyCounted.size(); j++ ) { //if the toy is in the vector, set found to true and break the //loop if( m_toys.at(i) == AlreadyCounted.at(j) ) { found = true; break; } } //if after checking all toys against the already found vector found //still equals false, then put the toy in the already counted vector if( found == false ) { AlreadyCounted.push_back( m_toys.at(i) ); } //set found to false again found = false; } //the number of distinct items will be the size of the alreadcounted // vector distinct = AlreadyCounted.size(); //return the number of distinct items return( distinct ); }