In: Computer Science
Code in C++, create the erase function shown in int main()
/* Use of dynamic memory to implement dynamic array (like vector) */
#include <iostream>
using namespace std;
class MyVector {
private:
int* arr; //only stores ints
int size;
int cap;
public:
MyVector() : arr{nullptr} {}; // Default constructor;
~MyVector(); // Destructor: Cleans up stuff. Here deletes arr
void push(int ele); // inserts element into vector
friend ostream& operator <<(ostream& os, MyVector& v);
};
int main()
{
MyVector vec;
vec.push(1); //should store 1 in the vec
vec.push(2); // should store 2 into the vec
vec.push(10); // should print all elements
vec.erase(0) // Erase element at position 0
cout << vec << endl; // should print remaining elements
}
MyVector::~MyVector() // Destructor
{
delete[] arr;
cout << "Destroyed vector" << endl;
}
ostream& operator <<(ostream& os, MyVector& v)
{
for(int i = 0; i < v.size; i++)
os << v.arr[i] << " ";
return os;
}
void MyVector::push(int ele)
{
// Check if arr == nullptr. If yes, dynamically create an array of elements. Insert ele into array
if (arr == nullptr) {
cap = 2;
arr = new int[cap];
arr[0] = ele;
size = 1;
}
else {
// Check if there is space
if (size < cap) {
arr[size] = ele;
size++;
}
else {
int* temp = arr;
arr = new int[2*cap];
for (int i = 0; i < cap; i++)
arr[i] = temp[i];
delete[] temp;
cap = 2*cap;
arr[size] = ele;
size++;
}
}
}
/* Use of dynamic memory to implement dynamic array (like vector) */
#include <iostream>
using namespace std;
class MyVector {
private:
int *arr; //only stores ints
int size;
int cap;
public:
MyVector() : arr{nullptr} {}; // Default constructor;
~MyVector(); // Destructor: Cleans up stuff. Here deletes arr
void push(int ele); // inserts element into vector
void erase(int index);
friend ostream &operator<<(ostream &os, MyVector &v);
};
int main() {
MyVector vec;
vec.push(1); //should store 1 in the vec
vec.push(2); // should store 2 into the vec
vec.push(10); // should print all elements
vec.erase(0); // Erase element at position 0
cout << vec << endl; // should print remaining elements
}
MyVector::~MyVector() // Destructor
{
delete[] arr;
cout << "Destroyed vector" << endl;
}
ostream &operator<<(ostream &os, MyVector &v) {
for (int i = 0; i < v.size; i++)
os << v.arr[i] << " ";
return os;
}
void MyVector::push(int ele) {
// Check if arr == nullptr. If yes, dynamically create an array of elements. Insert ele into array
if (arr == nullptr) {
cap = 2;
arr = new int[cap];
arr[0] = ele;
size = 1;
} else {
// Check if there is space
if (size < cap) {
arr[size] = ele;
size++;
} else {
int *temp = arr;
arr = new int[2 * cap];
for (int i = 0; i < cap; i++)
arr[i] = temp[i];
delete[] temp;
cap = 2 * cap;
arr[size] = ele;
size++;
}
}
}
void MyVector::erase(int index) {
if (index < size) {
for (int i = index; i < size-1; ++i) {
arr[i] = arr[i+1];
}
size--;
}
}