Question
Take the simple vector project found in the class repository. 1) Test the vector to make sure it works. 2) Add the following functions to
Take the simple vector project found in the class repository.
1) Test the vector to make sure it works.
2) Add the following functions to the class,
push_back, pop_back
push_front, pop_front
The functions should add or delete from the front or back. The array will need to be resized and copied.
3) Test your new functions to make sure they work
----------------------------------------------------------------------------------------------------------------------------
Simple Vector Project
[SimpleVector.h]
// SimpleVector class template #ifndef SIMPLEVECTOR_H #define SIMPLEVECTOR_H #include #include // Needed for bad_alloc exception #include // Needed for the exit function using namespace std;
template class SimpleVector { private: T *aptr; // To point to the allocated array int arraySize; // Number of elements in the array void memError(); // Handles memory allocation errors void subError(); // Handles subscripts out of range
public: // Default constructor SimpleVector() { aptr = 0; arraySize = 0;} // Constructor declaration SimpleVector(int); // Copy constructor declaration SimpleVector(const SimpleVector &); // Destructor declaration ~SimpleVector(); // Accessor to return the array size int size() const { return arraySize; }
// Accessor to return a specific element T getElementAt(int position);
// Overloaded [] operator declaration T &operator[](const int &); };
//*********************************************************** // Constructor for SimpleVector class. Sets the size of the * // array and allocates memory for it. * //***********************************************************
template SimpleVector::SimpleVector(int s) { arraySize = s; // Allocate memory for the array. try { aptr = new T [s]; } catch (bad_alloc) { memError(); }
// Initialize the array. for (int count = 0; count < arraySize; count++) *(aptr + count) = 0; }
//******************************************* // Copy Constructor for SimpleVector class. * //*******************************************
template SimpleVector::SimpleVector(const SimpleVector &obj) { // Copy the array size. arraySize = obj.arraySize; // Allocate memory for the array. aptr = new T [arraySize]; if (aptr == 0) memError(); // Copy the elements of obj's array. for(int count = 0; count < arraySize; count++) *(aptr + count) = *(obj.aptr + count); }
//************************************** // Destructor for SimpleVector class. * //**************************************
template SimpleVector::~SimpleVector() { if (arraySize > 0) delete [] aptr; }
//******************************************************* // memError function. Displays an error message and * // terminates the program when memory allocation fails. * //*******************************************************
template void SimpleVector::memError() { cout << "ERROR:Cannot allocate memory. "; exit(EXIT_FAILURE); }
//*********************************************************** // subError function. Displays an error message and * // terminates the program when a subscript is out of range. * //***********************************************************
template void SimpleVector::subError() { cout << "ERROR: Subscript out of range. "; exit(EXIT_FAILURE); }
//******************************************************* // getElementAt function. The argument is a subscript. * // This function returns the value stored at the sub- * // cript in the array. * //*******************************************************
template T SimpleVector::getElementAt(int sub) { if (sub < 0 || sub >= arraySize) subError(); return aptr[sub]; }
//******************************************************* // Overloaded [] operator. The argument is a subscript. * // This function returns a reference to the element * // in the array indexed by the subscript. * //*******************************************************
template T &SimpleVector::operator[](const int &sub) { if (sub < 0 || sub >= arraySize) subError(); return aptr[sub]; } #endif
---
[main.cpp]
//System Libraries #include using namespace std;
//User Libraries #include "SimpleVector.h"
//Global Constants
//Function prototypes void fillVec(SimpleVector &); void prntVec(SimpleVector &,int);
//Execution Begins Here int main(int argc, char** argv) { //Declare Variables unsigned int size=200; SimpleVector sv(size); //Fill the Vector fillVec(sv); //Print the Vector prntVec(sv,10); //Copy the Vector SimpleVector copysv(sv); //Print the Vector prntVec(copysv,10);
return 0; }
void prntVec(SimpleVector &sv,int perLine){ cout< for(int i=0;i cout< if(i%perLine==(perLine-1))cout< } cout< }
void fillVec(SimpleVector &sv){ for(int i=0;i sv[i]=rand()%26+65; } }
-----------------------------------------------------
Please show the whole code. Thank you
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started