#include #include "ArrayT.h" using namespace std; const size_t MAX_SIZE {100}; struct StaticArrayT { int data[MAX_SIZE]; size_t size{0}, capacity{0}; }; void TellAbout(ArrayT & array); void DoubleValues(ArrayT & array, StaticArrayT & compareData); void Compare(ArrayT & array, const StaticArrayT & staticArray); void PrintArray(ArrayT array) { cout << "In PrintArray" << endl; for(size_t i = 0; i < array.Size(); ++i) { cout << i << "\t" << array[i] << endl; } cout << "Out PrintArray" << endl; return; } int main() { ArrayT a; ArrayT b; StaticArrayT compareData; cout << "The empty array" << endl; TellAbout(a); Compare(a, compareData); for(size_t i = 0; i < 10; ++i) { a.PushBack(i); cout << "After adding element " << i << endl; TellAbout(a); PrintArray(a); // maintain the compare structure. compareData.size = i+1; compareData.capacity = i+1; compareData.data[i] = i; Compare(a, compareData); } cout << endl << endl; b = a; Compare(a, compareData); Compare(b, compareData); cout << "Doubling the values" << endl; DoubleValues(a, compareData); TellAbout(a); cout << endl << endl; cout << "Shrinking the array" << endl; while (a.Size() > 0) { a.PopBack(); TellAbout(a); --compareData.size; Compare(a, compareData); } return 0; } void TellAbout(ArrayT & array) { cout << endl; cout << "The array has: " << endl; cout << "\tSize: " << array.Size() << endl; cout << "\tCapcity: " << array.Capacity() << endl; if (array.Size() > 0) { cout << "\tValues: " << endl; for (size_t i = 0; i < array.Size(); ++i) { cout << "\t\t" << i << "\t\t" << array[i] << endl; } } cout << endl; return; } void DoubleValues(ArrayT & array, StaticArrayT & compareData){ for(size_t i = 0; i < array.Size(); ++i) { array[i] *= 2; compareData.data[i] *= 2; } } void Compare(ArrayT & array, const StaticArrayT & staticArray){ size_t i; if (array.Size() != staticArray.size) { cout << "\tError in compare, the sizes " << array.Size() << " and " << staticArray.size << " are not the same." << endl; return; } if (array.Capacity() != staticArray.capacity) { cout << "\tError in compare, the capacities " << array.Capacity() << " and " << staticArray.capacity << " are not the same." << endl; return; } for (i = 0; i < array.Size(); ++i) { if (array[i] != staticArray.data[i]) { cout << "\tError in compare, the element at position " << i << " is not the same " << array[i] << " and " << staticArray.data[i] << endl; } } return; }