#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
class dynamic_int_array{
int * p=nullptr;
int size =0;
int capacity=0;
public:
dynamic_int_array()=default;
dynamic_int_array(unsigned int s){
if(s>0 && s<10){
capacity =10;
p = new int[capacity];
memset(p,0,capacity);
size =s;
}else{
capacity =2*s;
p = new int[capacity];
memset(p,0,capacity);
size=s;
}
}
~dynamic_int_array(){
if(p)delete []p;
}
int &operator[](int pos)
{
return p[pos];
}
bool push_back(int value)
{
if(size+1> capacity){
int * new_p = new int[capacity*2];
memcpy(new_p,p,capacity);
delete[]p;
p =new_p;
p[size++]=value;
}else{
p[size]=value;
}
return true;
}
bool insert(int pos,int value)
{
if(pos <0 || pos > size)
return false;
if(size +1>capacity){
int * new_p =new int[capacity*=2];
memcpy(new_p,p,pos*4);
memcpy(&new_p[pos+1],p,4*(size-pos));
new_p[pos]=value;
delete[]p;
p=new_p;
size++;
}else{
int i;
for(i=size;i>pos;i--)
p[i] = p[i-1];
p[pos] = value;
size++;
}
cout<<"insert after:"<<endl;
cout<<"size="<<size<<endl;
cout<<"capacity="<<capacity<<endl;
}
bool remove(int pos){}
};
int main()
{
dynamic_int_array di(10);
di[0] = 100;
di[1] = 200;
di[2] = 300;
di.insert(0,900);
di.push_back(500);
int i;
for(i=0;i<20;i++)
cout<<di[i]<<" ";
cout<<endl;
cout<<sizeof(vector<int>)<<endl;
}