You are on page 1of 2

// SHEET 1 :

#include<iostream>
#include<cstddef>
using namespace std;

template <typename A> class DynamicArray{


private:
size_t c_size;
A* ptr;
public:

//constructor
DynamicArray(size_t m_size):c_size(m_size){
ptr = new A [c_size];
}

//Destructor
~DynamicArray(){
delete [] ptr;
}

//copy constructor
DynamicArray(const DynamicArray &object){
c_size = object.c_size;
ptr = new A [c_size];
for(int i=0; i < c_size ; ++i)
ptr[i] = object.ptr[i];
}

//Add Elements
void ADD_Elements(){
for(size_t i=0; i<Get_size(); ++i){
cout<<"Enter element ["<<i<<"] : ";
cin>>ptr[i];
}
}

//Get Elements
A &Get_ElementsAt(size_t index){
if(index>=c_size)
cout<<"Index Is Out Of Range"<<endl;
else
return ptr[index];
}

//Resize :
void Resize(size_t newsize){
A* ptr2 = new A [newsize];
for(int i=0 ; i<min(c_size,newsize) ; ++i)
ptr2[i] = ptr[i];
delete [] ptr;
ptr = ptr2;
c_size = newsize;
}

//Get size :
size_t Get_size(){
return c_size;
}

};

int main(){
//create an instance
DynamicArray <int> arrobject(3);
//add elements
arrobject.ADD_Elements();
//get elements
for(size_t i=0 ; i<arrobject.Get_size() ; ++i)
cout<<arrobject.Get_ElementsAt(i)<<endl;
//copy constructor
DynamicArray <int> arrobject2(arrobject);
for(size_t i=0 ; i<arrobject.Get_size() ; ++i)
cout<<arrobject2.Get_ElementsAt(i)<<endl;
//resize
arrobject.Resize(6);
cout<<"After Resize : "<<endl;
arrobject.ADD_Elements();
for(size_t i=0 ; i<arrobject.Get_size() ; ++i)
cout<<arrobject.Get_ElementsAt(i)<<endl;
return 0;
}

You might also like