Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在队列中实现向量_C++_Class_Vector - Fatal编程技术网

C++ 在队列中实现向量

C++ 在队列中实现向量,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; }; //初始化私有变量

当向量不需要使用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;
};
//初始化私有变量
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应为array
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];
来匹配您的声明。此外,
delete
s应该是数组
delete[]
s以避免潜在的内存损坏。并且,新分配的
arr
int[]
,而类成员是
char[]
。很抱歉,我不完全理解您要我替换的内容。不要将
int*
放在上面的行中。这声明了一个新的局部变量,这意味着您的代码不再更改类的
arr
成员变量。删除int*后程序仍然失败。错误如下:[error]无法将赋值中的“int*”转换为“char*”,这可能是因为
arr
char*
new int[maxSize+growthSize];
生成
int*
。您应该使用
new char[maxSize+growthSize];
来匹配您的声明。