init
This commit is contained in:
commit
8fb9887a82
|
|
@ -0,0 +1,2 @@
|
|||
*/*
|
||||
OOP*
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "IntVector.h"
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
#pragma once
|
||||
class IntVector
|
||||
{
|
||||
private:
|
||||
/*size_t curr_idx = 0;
|
||||
int* intVector = nullptr;*/
|
||||
|
||||
public:
|
||||
|
||||
|
||||
/*size_t size() const {
|
||||
return this->curr_idx;
|
||||
};
|
||||
|
||||
int& operator[](const size_t index) {
|
||||
if (index >= this->curr_idx)
|
||||
throw std::invalid_argument("Index must be less than vector's size");
|
||||
return this->intVector[index];
|
||||
};
|
||||
|
||||
IntVector() = default;
|
||||
|
||||
~IntVector() {
|
||||
delete[] intVector;
|
||||
};*/
|
||||
|
||||
/*IntVector(const IntVector& anotherVector) {
|
||||
delete[] intVector;
|
||||
this->curr_idx = anotherVector.size();
|
||||
|
||||
intVector = new int[255];
|
||||
}*/
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
#pragma once
|
||||
#include <iostream>
|
||||
#include "MyVector.h"
|
||||
|
||||
int main() {
|
||||
//1
|
||||
std::cout << "\n";
|
||||
std::cout << "MyVector Construction With Given Capacity Above The Limit *EXCEPTION* :\n";
|
||||
MyVector myVector(123);
|
||||
std::cout << "\n";
|
||||
|
||||
//set data
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
myVector.push_back(i+1);
|
||||
}
|
||||
|
||||
//Overloading ()
|
||||
std::cout << "\n";
|
||||
std::cout << "Overloading () : " << myVector() << "\n";
|
||||
std::cout << "============================\n";
|
||||
|
||||
//2,3 Overloading []
|
||||
std::cout << "\n";
|
||||
std::cout << "Overloading [] *correct* : " << myVector[0] << "\n";
|
||||
std::cout << "============================\n";
|
||||
std::cout << "Overloading [] *EXCEPTION* : " << myVector[99] << "\n";
|
||||
std::cout << "Overloading [] *EXCEPTION* : " << myVector[-99] << "\n";
|
||||
std::cout << "============================\n";
|
||||
|
||||
//4 Overloading +num
|
||||
std::cout << "\n";
|
||||
std::cout << "Overloading +num *correct* : \n";
|
||||
std::cout << "BEFORE: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] <<"\n";
|
||||
}
|
||||
myVector + 3;
|
||||
std::cout << "AFTER: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
std::cout << "============================\n";
|
||||
std::cout << "Overloading +num *EXCEPTION* : \n";
|
||||
std::cout << "BEFORE: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
myVector + 6;
|
||||
std::cout << "AFTER: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
std::cout << "============================\n";
|
||||
|
||||
//5 Overloading -num
|
||||
std::cout << "\n";
|
||||
std::cout << "Overloading -num *correct* : \n";
|
||||
std::cout << "BEFORE: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
myVector - 2;
|
||||
std::cout << "AFTER: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
std::cout << "============================\n";
|
||||
std::cout << "Overloading -num *EXCEPTION* : \n";
|
||||
std::cout << "BEFORE: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
myVector - 6;
|
||||
std::cout << "AFTER: \n";
|
||||
for (int i = 0; i < myVector(); i++)
|
||||
{
|
||||
std::cout << myVector[i] << "\n";
|
||||
}
|
||||
myVector - 3;
|
||||
myVector - 3;
|
||||
std::cout << "============================\n";
|
||||
|
||||
system("pause");
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "MyVector.h"
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
#pragma once
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class MyVector
|
||||
{
|
||||
private:
|
||||
int* vector = nullptr;
|
||||
int currentIndex = 0; //add new element at this index
|
||||
int maxCapacity = 13;
|
||||
int maxConstValue = 3;
|
||||
int currentCapacity = 0;
|
||||
public:
|
||||
|
||||
MyVector() {
|
||||
this->vector = new int[currentCapacity];
|
||||
};
|
||||
MyVector(int capacity) {
|
||||
try
|
||||
{
|
||||
if (capacity > maxCapacity)
|
||||
{
|
||||
this->currentCapacity = this->maxCapacity;
|
||||
this->vector = new int[maxCapacity];
|
||||
throw std::invalid_argument(
|
||||
"Unable To Create MyVector With Given Capacity Of " + \
|
||||
std::to_string(capacity) + \
|
||||
". Max Capacity Of MyVector is " + \
|
||||
std::to_string(this->maxCapacity) +\
|
||||
" Elements.\nMyVector With Max Capacity Of "+\
|
||||
std::to_string(this->maxCapacity) + \
|
||||
" Has Been Created."
|
||||
);
|
||||
}
|
||||
else {
|
||||
this->currentCapacity = capacity;
|
||||
this->vector = new int[capacity];
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << e.what() << "\n";
|
||||
}
|
||||
};
|
||||
MyVector(const MyVector& obj) {
|
||||
this->vector = obj.vector;
|
||||
this->currentIndex = obj.currentIndex;
|
||||
this->currentCapacity = obj.currentCapacity;
|
||||
};
|
||||
~MyVector() {};
|
||||
|
||||
int getLength() {
|
||||
return this->currentIndex;
|
||||
};
|
||||
|
||||
int operator()() {
|
||||
return this->currentIndex;
|
||||
};
|
||||
|
||||
int operator[](int index) {
|
||||
try
|
||||
{
|
||||
if (index > (this->currentIndex-1) || index < 0)
|
||||
{
|
||||
throw std::invalid_argument("Index out of vector range");
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
return vector[index];
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << e.what() << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
void operator + (int value) {
|
||||
try
|
||||
{
|
||||
if (value > this->maxConstValue)
|
||||
{
|
||||
throw std::invalid_argument(
|
||||
"Unable to Increase Elements. Given Number " + \
|
||||
std::to_string(value) + \
|
||||
" Is Beyond The Limit. Current Limit Is " +\
|
||||
std::to_string(this->maxConstValue) +\
|
||||
"."
|
||||
);
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i <= this->currentIndex; i++)
|
||||
{
|
||||
this->vector[i] += value;
|
||||
};
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << e.what() << "\n";
|
||||
}
|
||||
};
|
||||
|
||||
void operator - (int value) {
|
||||
try
|
||||
{
|
||||
if (this->currentIndex == 0)
|
||||
{
|
||||
throw std::invalid_argument(
|
||||
"Unable to Remove Elements. MyVector Is Empty."
|
||||
);
|
||||
}
|
||||
else if (value > this->currentIndex) {
|
||||
throw std::invalid_argument(
|
||||
"Unable to Remove Elements. Given Value Of " + \
|
||||
std::to_string(value) + \
|
||||
" More Than Number Of Elements In MyVector Which Is " + \
|
||||
std::to_string(this->currentIndex) + \
|
||||
"."
|
||||
);
|
||||
}
|
||||
else if (value == this->currentIndex) {
|
||||
delete[] this->vector;
|
||||
this->vector = new int[0];
|
||||
this->currentIndex = 0;
|
||||
}
|
||||
else {
|
||||
int* tmp = new int[this->currentIndex - value];
|
||||
|
||||
for (int i = 0; i < this->currentIndex - value; i++)
|
||||
{
|
||||
tmp[i] = this->vector[i];
|
||||
};
|
||||
this->currentIndex -= value;
|
||||
|
||||
delete[] this->vector;
|
||||
this->vector = tmp;
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << e.what() << "\n";
|
||||
}
|
||||
};
|
||||
|
||||
void push_back(int value) {
|
||||
try
|
||||
{
|
||||
if (this->currentIndex == this->maxCapacity) {
|
||||
throw std::invalid_argument("Unable To Add Element. MyVector Has Reached Capacity Limit.\n");
|
||||
}
|
||||
else {
|
||||
//if vector capacity reached, increase it size
|
||||
if (this->currentIndex == this->currentCapacity)
|
||||
{
|
||||
int* tmp = new int[this->currentCapacity + 1];
|
||||
|
||||
for (int i = 0; i < this->currentIndex; i++)
|
||||
{
|
||||
tmp[i] = this->vector[i];
|
||||
};
|
||||
tmp[currentIndex] = value;
|
||||
this->currentIndex++;
|
||||
this->currentCapacity++;
|
||||
|
||||
delete[] this->vector;
|
||||
this->vector = tmp;
|
||||
}
|
||||
else {
|
||||
this->vector[currentIndex] = value;
|
||||
this->currentIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << e.what() << "\n";
|
||||
}
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue