Question: C++ Convert the class that you wrote in your previous assignment to template. Test the template with dynamic arrays of integers and dynamic array of
C++
Convert the class that you wrote in your previous assignment to template.
Test the template with dynamic arrays of integers and dynamic array of strings.
#include
using namespace std;
class DynamicStringArray { public: DynamicStringArray(); DynamicStringArray(const DynamicStringArray& o); ~DynamicStringArray(); DynamicStringArray& operator = (const DynamicStringArray& r);
void addEntry(string newEntry); bool deleteEntry(string newEntry); string getEntry(int index); int getSize();
private: string *dynamicArray; int size; };
DynamicStringArray::DynamicStringArray() { dynamicArray = NULL; size = 0; }
DynamicStringArray::DynamicStringArray(const DynamicStringArray& o) { size = o.size;
if (size == 0) { dynamicArray = NULL; } else { dynamicArray = new string[size];
for (int i = 0; i < size; i++) { dynamicArray[i] = o.dynamicArray[i]; } } }
DynamicStringArray& DynamicStringArray::operator =(const DynamicStringArray& r) { if (dynamicArray != NULL) { delete[] dynamicArray; }
if (r.size == 0) { size = 0; dynamicArray = NULL; } else { size = r.size; dynamicArray = new string[size];
for (int i = 0; i < size; i++) { dynamicArray[i] = r.dynamicArray[i]; } }
return *this; }
DynamicStringArray::~DynamicStringArray() { if (dynamicArray != NULL) delete[] dynamicArray; }
int DynamicStringArray::getSize() { return size; }
void DynamicStringArray::addEntry(string newEntry) { string *newArray = new string[size + 1];
for (int i = 0; i < size; i++) { newArray[i] = dynamicArray[i]; }
delete[] dynamicArray; dynamicArray = newArray; newArray[size++] = newEntry; }
bool DynamicStringArray::deleteEntry(string entry) { string *result = NULL; int pos = -1;
for (int i = 0; (i < size) && (pos == -1); i++) { if (dynamicArray[i] == entry) { pos = i; } }
if (pos == -1) { return false; }
if (size > 1) { result = new string[size - 1]; }
for (int i = 0, j = 0; i < size; i++) { if (i != pos) { result[j++] = dynamicArray[i]; } }
size--; delete[] dynamicArray; dynamicArray = result;
return true; }
string DynamicStringArray::getEntry(int index) { if ((index < 0) || (index >= size)) return NULL; return dynamicArray[index]; }
Your assignment will be tested with the following main function:
int main() { DynamicArray
// List of names names.addEntry("Frank"); names.addEntry("Wiggum"); names.addEntry("Nahasapeemapetilon"); names.addEntry("Quimby"); names.addEntry("Flanders");
// Output list cout << "List of names:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
// Add and remove some names names.addEntry("Spuckler"); cout << "After adding a name:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
names.deleteEntry("Nahasapeemapetilon"); cout << "After removing a name:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
names.deleteEntry("Skinner"); cout << "After removing a name that isn't on the list:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
names.addEntry("Muntz"); cout << "After adding another name:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
// Remove all of the names by repeatedly deleting the last one while (names.getSize() > 0) { names.deleteEntry(names.getEntry(names.getSize() - 1)); }
cout << "After removing all of the names:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
names.addEntry("Olivia"); cout << "After adding a name:" << endl; for (int i = 0; i < names.getSize(); i++) cout << names.getEntry(i) << endl; cout << endl;
cout << "Testing copy constructor" << endl; DynamicArray
cout << "Testing assignment" << endl; DynamicArray
cout << "Testing dynamic array of ints" << endl; DynamicArray
cout << "Enter a character to exit." << endl; char wait; cin >> wait; return 0; }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
