我正在尝试一些代码。我有一个类IntArr
,我必须向其中添加元素,但是当我通过类的大小时,调整大小无法正常工作。我只能添加
class IntArr{
private:
int * p;
int size;
int used;
public:
IntArr (int sz);
IntArr (int sz,int qtty,int *vec);
~IntArr();
void prtArr (void) ;
void addElement(int xx);
void addElement(int qtty, int* vec);
};
void IntArr:: addElement(int xx){
if(used+1>size){
std::vector<int> p;
size+=6;
p.resize(size);
}
p[used]=xx;
used++;
}
void IntArr:: addElement(int qtty, int* vec){
int i;
i=used;
std::vector<int> p;
size+=qtty;
p.resize(size);
while(i-used<qtty){
p[i]=vec[i-used];
i++;
}
used+=qtty;
}
void IntArr:: prtArr (void) const{
using namespace std;
int i=0;
cout<<"> Array : ";
if(!used)
cout<<"Vacio !!!";
else
while(i<used){
cout<<p[i]<<" ";
i++;
}
cout<<endl;
}
int main(int argc, char *argv[])
{
int v_aux[]={0,5,10,15,20,25,30,35,40};
IntArr A(10,sizeof(v_aux)/sizeof(int),v_aux);
cout<<" size:"<<A.getSize()<<endl<<" used:"<<A.getUsed()<<endl;
A.prtArr();
A.addElement(77);
cout<<" size:"<<A.getSize()<<endl<<" used:"<<A.getUsed()<<endl;
A.prtArr();
A.addElement(11);
cout<<" size:"<<A.getSize()<<endl<<" used:"<<A.getUsed()<<endl;
A.prtArr();
A.addElement(8,v_aux);
cout<<" size:"<<A.getSize()<<endl<<" used:"<<A.getUsed()<<endl;
A.prtArr();
PRESS_KEY;
}
该代码仅能很好地添加元素77。
答案 0 :(得分:0)
在addElement上,您没有使用在类上定义的私有int * p。每次addElement方法创建一个本地p std :: vector时,该方法返回时都会销毁。