C++ 在队列中实现向量
当向量不需要使用grow函数时,它显示得很好,但是一旦grow函数初始化,向量的显示就会变得疯狂,下面是结果 输出: 增长函数未初始化: R B C E R B 在本例中,通过添加另一个元素“E”初始化Grow函数 R B R BC++ 在队列中实现向量,c++,class,vector,C++,Class,Vector,当向量不需要使用grow函数时,它显示得很好,但是一旦grow函数初始化,向量的显示就会变得疯狂,下面是结果 输出: 增长函数未初始化: R B C E R B 在本例中,通过添加另一个元素“E”初始化Grow函数 R B R B #包括 使用名称空间std; 类向量{ 公众: 无效添加(字符); void display(); void sets(); 私人: 空洞生长(); 内部生长尺寸; int-maxSize; int currSize=0; char*arr; }; //初始化私有变量
#包括
使用名称空间std;
类向量{
公众:
无效添加(字符);
void display();
void sets();
私人:
空洞生长();
内部生长尺寸;
int-maxSize;
int currSize=0;
char*arr;
};
//初始化私有变量
void vector::setSizes(){
生长大小=2;
最大尺寸=7;
arr=新字符[maxSize];
}
//使向量增长
void vector::grow(){
int*temp=新int[maxSize];
//制作数组的副本
对于(inti=0;i这条线
int *arr = new int[maxSize+growthSize];
在类中隐藏arr
的声明,因此您只需处理局部变量。此行
int *arr = new int[maxSize+growthSize];
在类中隐藏arr
的声明,因此您只需处理局部变量。此行
int *arr = new int[maxSize+growthSize];
在类中隐藏arr
的声明,因此您只需处理局部变量。此行
int *arr = new int[maxSize+growthSize];
隐藏类中arr
的声明,这样您就可以处理局部变量。arr[currSize]=insert;您在检查大小之前赋值?arr[currSize]=insert;您在检查大小之前赋值?arr[currSize]=insert;您在检查大小之前赋值?arr[currSize]=插入;在检查大小之前进行赋值?此外,delete
s应为arraydelete[]
s以避免潜在的内存损坏。并且,新分配的arr
为int[]
,而类成员为char[]
。很抱歉,我不完全理解您要我替换的内容。不要将int*
放在上面的行中。这声明了一个新的局部变量,这意味着您的代码不再更改类的arr
成员变量。删除int*后程序仍然失败。错误如下:[error]无法将赋值中的“int*”转换为“char*”,这可能是因为arr
是char*
和new int[maxSize+growthSize];
生成int*
。您应该使用new char[maxSize+growthSize];
来匹配您的声明。此外,delete
s应该是数组delete[]
s以避免潜在的内存损坏。并且,新分配的arr
是int[]
,而类成员是char[]
。很抱歉,我不完全理解您要我替换的内容。不要将int*
放在上面的行中。这声明了一个新的局部变量,这意味着您的代码不再更改类的arr
成员变量。删除int*后程序仍然失败。错误如下:[error]无法将赋值中的“int*”转换为“char*”,这可能是因为arr
是char*
和new int[maxSize+growthSize];
生成int*
。您应该使用new char[maxSize+growthSize];
来匹配您的声明。此外,delete
s应该是数组delete[]
s以避免潜在的内存损坏。并且,新分配的arr
是int[]
,而类成员是char[]
。很抱歉,我不完全理解您要我替换的内容。不要将int*
放在上面的行中。这声明了一个新的局部变量,这意味着您的代码不再更改类的arr
成员变量。删除int*后程序仍然失败。错误如下:[error]无法将赋值中的“int*”转换为“char*”,这可能是因为arr
是char*
和new int[maxSize+growthSize];
生成int*
。您应该使用new char[maxSize+growthSize];
来匹配您的声明。此外,delete
s应该是数组delete[]
s以避免潜在的内存损坏。并且,新分配的arr
是int[]
,而类成员是char[]
。很抱歉,我不完全理解您要我替换的内容。不要将int*
放在上面的行中。这声明了一个新的局部变量,这意味着您的代码不再更改类的arr
成员变量。删除int*后程序仍然失败。错误如下:[error]无法将赋值中的“int*”转换为“char*”,这可能是因为arr
是char*
和new int[maxSize+growthSize];
生成int*
。您应该使用new char[maxSize+growthSize];
来匹配您的声明。