Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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();

image text in transcribed

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 argument

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Processing

Authors: David Kroenke

11th Edition

0132302675, 9780132302678

More Books

Students also viewed these Databases questions