Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

PLEASE help me with this assignment. For this assignment, you will continue to improve your MyVector class. To do so, templatize your MyVector class so

PLEASE help me with this assignment.

For this assignment, you will continue to improve your MyVector class.

To do so, templatize your MyVector class so that it will work with any data type, not just integers.

Then, have the overloaded array operator ( [] ) and the at method throw an exception, the string literal "OUT OF BOUNDS", if an invalid index is used.

Place all of the code for your class in a single file named MyVector.h and submit only this file (class templates don't like being split up across files).

Hints:

The generic data type has to be different for operator<< than it does for the MyVector class. If you use the same one, you'll get an error message about shadowed generic types.

THIS IS THE LASS ASSIGNMENT WITH ITS CLASS. MyVector.h

#ifndef MYVECTOR_H #define MYVECTOR_H #include using std::ostream; class MyVector { private: int* list, list_size, max_size; public: MyVector(); ~MyVector(); void push_back(int); void pop_back(); int& at(int); void clear(); int size() const; MyVector(const MyVector&); bool operator<(const MyVector&) const; bool operator==(const MyVector&) const; MyVector operator+(const MyVector&) const; int& operator[](int); MyVector operator++(int); MyVector& operator=(const MyVector&); friend ostream& operator<<(ostream&, MyVector&); }; #endif 

THIS IS MyVector.cpp

#include "MyVector.h" MyVector::MyVector() { list_size = 0; max_size = 10; list = new int[max_size]; } MyVector::~MyVector() { delete [] list; } void MyVector::push_back(int i) { if(list_size < max_size) { list[list_size] = i; list_size++; } } void MyVector::pop_back() { if(list_size > 0) list_size--; } int& MyVector::at(int i) { return list[i]; } void MyVector::clear() { list_size = 0; } int MyVector::size() const { return list_size; } bool MyVector::operator<(const MyVector& r) const { return list_size < r.list_size; } bool MyVector::operator==(const MyVector& r) const { bool same = true; if(list_size != r.list_size) same = false; else { for(int i = 0; i < list_size; i++) if(list[i] != r.list[i]) { same = false; break; } } return same; } MyVector MyVector::operator+(const MyVector& r) const { MyVector temp; int j = list_size > r.list_size ? list_size : r.list_size; for(int i = 0; i < j; i++) temp.push_back(list[i] + r.list[i]); return temp; } int& MyVector::operator[](int i) { return list[i]; } MyVector MyVector::operator++(int) { MyVector temp = *this; for(int i = 0; i < temp.size(); i++) list[i]++; return temp; } MyVector& MyVector::operator=(const MyVector& r) { if(this != &r) { if(list) delete [] list; list_size = r.list_size; max_size = r.max_size; list = new int[max_size]; for(int i = 0; i < list_size; i++) list[i] = r.list[i]; } return *this; } MyVector::MyVector(const MyVector& r) { list = nullptr; *this = r; } ostream& operator<<(ostream& o, MyVector& r) { o << "["; if( r.size() > 0 ) { int i = 0; for(i; i < r.size() - 1; i++) o << r[i] << ", "; o << r[i]; } o << "]"; return o; } 

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 Concepts

Authors: David Kroenke, David Auer, Scott Vandenberg, Robert Yoder

9th Edition

0135188148, 978-0135188149, 9781642087611

More Books

Students also viewed these Databases questions