动态地添加元素
Adding elements to class dynamically
我正在尝试使用一些代码。我有一个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 ::向量时,该方法返回时会被破坏。
相关文章:
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将元素添加到数组的线程安全函数?
- 如何将元素添加到向量的字符串位置
- 将数组的元素添加到链表中
- 如何在C++中将元素添加到非固定大小的数组中?
- 如何使用模板根据类型将元素添加到各种容器中
- 将在堆栈上声明的元素添加到静态数组
- 有什么方法可以将元素添加到列表中,如图所示?
- 继承层次结构并将元素添加到向量
- gStreamer 将元素添加到通过 gst_parse_launch 创建的管道中
- 将新元素添加到列表中,并返回对该元素的引用?
- 将元素添加到 std::list 在多线程中,无需 C++ 互斥锁
- C++如何通过超出大小将元素添加到指针数组中
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 将字符串集合中的元素添加到字符串集合的向量中
- 为什么 memcpy() 是一种将元素添加到 'std::map' 的方法?
- 如何有条件地将元素添加到 std::array - C++11
- 如何在 c++ 中将元素添加到数组的最后一个
- 如何使用<<运算符将元素添加到向量?
- 将元素添加到结构向量的全球向量中