Deque C++ Tutorial

#include 
#include 
#include 
#include 
using namespace std;
template 
void print(T& c){
   for( typename T::iterator i = c.begin(); i != c.end(); i++ ){
      std::cout << *i << endl;
   }
}
class Auction_item
{
   public:
   Auction_item( const string& name = "nothing",
      int minimum_bid = 0 );
   int minimum_bid() const;
   string name() const;
   private:
   int minimum_bid_;
   string name_;
};
inline
Auction_item::Auction_item( const string& name, int minimum_bid )
   : name_( name ), minimum_bid_( minimum_bid )
{}
inline
int Auction_item::minimum_bid() const{  return minimum_bid_; }
inline
string Auction_item::name() const{  return name_; }
int main( )
{
   vector v( 5 );
   v[0] = Auction_item( "A", 150 );
   v[1] = Auction_item( "B", 10 );
   v[2] = Auction_item( "C", 75 );
   v[3] = Auction_item( "D", 20 );
   v[4] = Auction_item( "E", 100 );
   deque items;
   // load auction items with cheap ones in front, expensive at back
   const int min_expensive_item = 50;
   for( vector::iterator i = v.begin();
      i != v.end(); ++i )
      if( i->minimum_bid() >= min_expensive_item )
         items.push_back( *i );
      else
         items.push_front( *i );
   // sell the items
   bool sell_cheap = true;
   while( !items.empty() )
   {
      if( sell_cheap )
      {
         cout << items.front().name()
            << " for a minimum bid of "
            << items.front().minimum_bid() << endl;
         items.pop_front();
      }
      else
      {
         cout << "Now selling: a " << items.back().name()
            << " for a minimum bid of "
            << items.back().minimum_bid() << endl;
         items.pop_back();
      }
      // Alternate selling cheap and expensive
      sell_cheap = !sell_cheap;
   }
}