Mega Code Archive

 
Categories / C++ Tutorial / Deque
 

Using the Front of a Deque

#include <deque> #include <iostream> #include <string> #include <vector> using namespace std; template <class T> 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<Auction_item> 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<Auction_item> items;    // load auction items with cheap ones in front, expensive at back    const int min_expensive_item = 50;    for( vector<Auction_item>::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;    } }