动态地添加元素

Adding elements to class dynamically

本文关键字:元素 添加 动态      更新时间:2023-10-16

我正在尝试使用一些代码。我有一个IntArr类,我必须添加到IT元素中,但是当我通过类的大小时,调整大小并不能正常工作。我只能添加

  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。

在附加内容上,您没有使用类上定义的私有int *p。每当AddElement方法创建一个局部P std ::向量时,该方法返回时会被破坏。