Source of Listing4-4.cpp


  1: //  Created by Frank M. Carrano and Tim Henry.
  2: //  Copyright (c) 2013 __Pearson Education__. All rights reserved.

  4: /** Listing 4-4. */
  5: #include "BagInterface.h"
  6: #include "ArrayBag.h"
  7: #include "LinkedBag.h"
  8: #include <iostream>
  9: #include <string>

 11: void displayBag(BagInterface<std::string>* bagPtr)
 12: {
 13:    std::cout << "The bag contains " << bagPtr– >getCurrentSize()
 14:              << " items:" << std::endl;
 15:    std::vector<std::string> bagItems = bagPtr– >toVector();
 16:    int numberOfEntries = bagItems.size();
 17:    for (int i = 0; i < numberOfEntries; i++)
 18:    {
 19:       std::cout << bagItems[i] << " ";
 20:    } // end for
 21:    std::cout << std::endl << std::endl;
 22: } // end displayBag

 24: void bagTester(BagInterface<std::string>* bagPtr)
 25: {
 26:    std::cout << "isEmpty: returns " << bagPtr– >isEmpty()
 27:              << "; should be 1 (true)" << std::endl;
 28:    std::string items[] = {"one", "two", "three", "four", "five", "one"};
 29:    std::cout << "Add 6 items to the bag: " << std::endl;
 30:    for (int i = 0; i < 6; i++)
 31:    {
 32:       bagPtr– >add(items[i]);
 33:    } // end for
 34:    
 35:    displayBag(bagPtr);
 36:    std::cout << "isEmpty: returns " << bagPtr– >isEmpty()
 37:              << "; should be 0 (false)" << std::endl;
 38:    std::cout << "getCurrentSize returns : " << bagPtr– >getCurrentSize()
 39:              << "; should be 6" << std::endl;
 40:    std::cout << "Try to add another entry: add(\"extra\") returns "
 41:              << bagPtr– >add("extra") << std::endl;
 42: } // end bagTester

 44: int main()
 45: {
 46:    BagInterface<std::string>* bagPtr = nullptr;
 47:    char userChoice;
 48:    std::cout << "Enter 'A' to test the array-based implementation\n"
 49:              << " or 'L' to test the link-based implementation: ";
 50:    std::cin >> userChoice;
 51:    if (toupper(userChoice) == 'A')
 52:    {
 53:       bagPtr = new ArrayBag<std::string>();
 54:       std::cout << "Testing the Array-Based Bag:" << std::endl;
 55:    }
 56:    else
 57:    {
 58:       bagPtr = new LinkedBag<std::string>();
 59:       std::cout << "Testing the Link-Based Bag:" << std::endl;
 60:    } // end if
 61:    
 62:    std::cout << "The initial bag is empty." << std::endl;
 63:    bagTester(bagPtr);
 64:    delete bagPtr;
 65:    bagPtr = nullptr;
 66:    std::cout << "All done!" << std::endl;
 67:    
 68:    return 0;
 69: } // end main