Question
The following is the program: #include #include using namespace std; class BasicVector { private: int vector_size; int vector_capacity; int* data; void resize(); public: BasicVector(int); ~BasicVector();
The following is the program:
#include #include
using namespace std;
class BasicVector { private: int vector_size; int vector_capacity; int* data;
void resize();
public: BasicVector(int); ~BasicVector();
int& at(int); int& operator[](int); int& front(); int& back();
void push_back(int); void insert(int, int); void pop_back();
int size(); int capacity();
void print(); };
BasicVector::BasicVector(int capacity) { vector_size = 0;
if (capacity
BasicVector::~BasicVector() { while (vector_size > 0) pop_back();
delete [] data; }
void BasicVector::resize() { int* temp = data; data = new int[vector_capacity *= 2];
for (int i = 0; i
delete [] temp; }
int& BasicVector::at(int index) { if (0
int& BasicVector::operator[](int index) { if (0
int& BasicVector::front() { if (vector_size > 0) return data[0];
cout
int& BasicVector::back() { if (vector_size > 0) return data[vector_size - 1];
cout
void BasicVector::push_back(int value) { if (vector_size == vector_capacity) resize();
data[vector_size++] = value; }
void BasicVector::insert(int index, int value) { if (0 index; --i) data[i] = data[i-1]; ++vector_size; data[index] = value; } }
void BasicVector::pop_back() { if (vector_size > 0) data[--vector_size] = 0; }
int BasicVector::size() { return vector_size; }
int BasicVector::capacity() { return vector_capacity; }
void BasicVector::print() { cout
void interactive_mode() { int capacity, index, value; string cmd; cout > capacity; BasicVector vector(capacity);
cout
while(true) { cout "; cin >> cmd;
if (cmd == "at") { cin >> index; cout > index; cout > index >> value; vector.insert(index, value); } else if (cmd == "push") { cin >> value; vector.push_back(value); } else if (cmd == "front") { cout
int main() { interactive_mode();
return 0; }
The following is the get_datatype.cpp
int get_datatype() {
int choice;
do {
cout
cout
cout
cout
cout
cout
cout ";
cin >> choice;
} while (choice
return choice;
}
CMPSC 122.3 February 20, 2020 Assignment 2 Due: Friday, Feb 28, 2020 End of Day - 11:59 pm Overview A vector is a container that can be treated like a normal array (create without using the new keyword) but also allows for dynamic resizing if the vector runs out of capacity to store new data. How is this possible? A vector is just an abstraction that performs dynamic memory allocation behind the scenes, but is presented in a way that is familiar to using an array, as well as providing additional functionality. The template file basic_integer_vector.cpp is provided for you, and it is a complete implementation of a very simple integer vector. The interactive_mode function allows the user to type in commands and values that will modify a vector object when properly input. Compile the program and test some of the commands. On Canvas, the file integer_vector_sample_program_run.ext shows a series of commands that provide a thorough illustration how the vector class works. (50 Points) Generic Vector Take the code from the integer_basic_vector.cpp program, and modify it to create a program (called generic_vector.cpp) that does that following: 1. Uses templates in order to allow the BasicVector class to not be limited to just containing integers The template will allow you to substitute a placeholder label in the following parts of the code: o The data type of the data member field o The data type of the value parameter in the push_back and insert functions o The return type of the at, front, back, and I) functions o Logic in the resize and the constructors that dynamically allocates data o In the pop_back function, modify the line data[ --vector_size] = 0; into data[--vector_size] = T(); 2. Insert the get_datatype function provided in the get_datatype.cpp file into your code 3. Transform the interactive_mode function into a template function, such that you can explicitly invoke interactive_mode from main with the correct type. 4. Modify the main function to call get_datatype, and based on the returned int value, explicitly call interactive_mode with the correct template argument. CMPSC 122.3 February 20, 2020 Assignment 2 Due: Friday, Feb 28, 2020 End of Day - 11:59 pm Overview A vector is a container that can be treated like a normal array (create without using the new keyword) but also allows for dynamic resizing if the vector runs out of capacity to store new data. How is this possible? A vector is just an abstraction that performs dynamic memory allocation behind the scenes, but is presented in a way that is familiar to using an array, as well as providing additional functionality. The template file basic_integer_vector.cpp is provided for you, and it is a complete implementation of a very simple integer vector. The interactive_mode function allows the user to type in commands and values that will modify a vector object when properly input. Compile the program and test some of the commands. On Canvas, the file integer_vector_sample_program_run.ext shows a series of commands that provide a thorough illustration how the vector class works. (50 Points) Generic Vector Take the code from the integer_basic_vector.cpp program, and modify it to create a program (called generic_vector.cpp) that does that following: 1. Uses templates in order to allow the BasicVector class to not be limited to just containing integers The template will allow you to substitute a placeholder label in the following parts of the code: o The data type of the data member field o The data type of the value parameter in the push_back and insert functions o The return type of the at, front, back, and I) functions o Logic in the resize and the constructors that dynamically allocates data o In the pop_back function, modify the line data[ --vector_size] = 0; into data[--vector_size] = T(); 2. Insert the get_datatype function provided in the get_datatype.cpp file into your code 3. Transform the interactive_mode function into a template function, such that you can explicitly invoke interactive_mode from main with the correct type. 4. Modify the main function to call get_datatype, and based on the returned int value, explicitly call interactive_mode with the correct template argumentStep 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