#include <iostream>
using namespace std;
//vector data structure
class Vector {
private:
//private data members
int* vect;
int capacity;
int increment = 0;
int elmCount = 0;
bool isFull() {
return (elmCount == capacity);
}
bool isEmpty() {
return (elmCount == 0);
}
void dynamicGrow() { //doubles the size of vector if increment is not
provided
int* toDelete = vect;
if (increment == 0) {
capacity *= 2; //doubles the size of the vector
}
else {
capacity += increment; //increases the size by increment
}
vect = new int[capacity];
for (int i = 0; i < elmCount; i++) {
vect[i] = toDelete[i]; //copy elms of old arr to the
dynamically grown one
}
delete[] toDelete; //delete old array
}
void dynamicShrink() { //reduces the size of array to the number of
elms it contains
int* toDelete = vect;
capacity = elmCount;
vect = new int[capacity];
for (int i = 0; i < elmCount; i++) {
vect[i] = toDelete[i]; //copy elms of the old array to the
dynamically shrinked one
}
delete[] toDelete;
}
public:
Vector() : capacity(10), vect(new int[capacity]) {} //default size array of
size 10
Vector(int cap) : capacity(cap), vect(new int[cap]) {}
Vector(int cap, int inc) : capacity(cap), vect(new int[cap]), increment(inc)
{}
void insert(int student) {
if (isFull()) {
dynamicGrow();
}
vect[elmCount] = student;
elmCount++;
}
void deleteElm(int value) {
int loc = search(value); //index at which the elm is stored
if (loc != -1) {
for (int i = loc; i < elmCount - 1; i++) { //from the elm to
delete onwards
vect[i] = vect[i + 1]; //copy every next elm to the
previous index
}
elmCount--;
dynamicShrink();
}
}
int search(int value) { //return index of the elm otherwise -1
if (isEmpty()) {
cout << "The list is empty.\n" << endl;
}
else {
for (int i = 0; i < elmCount; i++) {
if (vect[i] == value) {
return i;
}
}
cout << "Entered value is not in the list.\n" << endl;
}
return -1;
}
void replace(int toRep, int repWith) { //replace a student with another
int loc = search(toRep);
if (loc != -1) {
vect[loc] = repWith;
}
}
void replaceAtIndex(int index, int repWith) { //replace a student at a
specified index
if ((index > 0) && (index < elmCount)) {
vect[index] = repWith;
}
else {
cout << "Could not replace. Invalid index entered.";
}
}
void display(){ //prints all elememts in the vector
for (int i = 0; i < elmCount; i++){
cout << vect[i] << " ";
}
cout << endl << endl;
}
};
int main(){
Vector vect(3);
for (int i; i < 7; i++){
[Link](i);
}
[Link]();
[Link](3);
[Link]();
[Link](1, 5);
[Link](3,2);
[Link]();
}