First, your My_Array::operator= doesn't work.
Since you return a reference, what you return must be exactly the original object but you have made a copy of the array so you don't have a reference.
You need to return *this.
But that means you need to make a My_Array object so you can return a referecne to that. Unfortunately, that will be a local object and you can't return a reference to a local object.
In short, your assignment operator needs to return a My_Array object and not a reference to one.
As to using vector<int>, C++ requires that vector<> implement a real array. Just like you are doing. This means that all of the vector<> member functions are direct replcements for the code you will write for My_Array. Plus yure code is non-standard and only works for the int type unless you make a template, which vector<> is already.
Therefore,
completely replaces all of your code with standard code that everyone knows about.
So, unless this is some homework assignment, you should vector<> and never use native arrays or classes that you write that use native arrays.