我想创建缩短数组大小到cerstaind数。我有一个班级
class Numbers{
public:
Numbers(){
max = 10;
arr = new int[max];
current = 0;
}
private:
int *arr;
int max;
int current;
}
我只想做什么。如果数组包含数字(10),例如
arr // 1 2 3 4 5 6 7 8 9 10
并且我调用.shorten(number)
方法,它会将数组缩短为所述数字,因此在6中它将是
arr // 1 2 3 4 5 6
我创建了一个方法
void Numbers::shorten(int a ){
int *tmp = new int[a];
for( int i = 0; i < a; i++){
tmp[i] = arr[i];
}
max = a;
delete[] arr;
arr = tmp;
}
当我调用此方法并打印数组时,输出应为1 2 3 4 5 6
,但它会打印相同的数组,前两个数字是内存中的一些随机数。是什么导致这种情况,我该如何防止这种情况发生?
打印功能如下所示
void Numbers::PrintAll(){
for( int i = 0; i < max ; i++){
cout << arr[i] << endl;
}
}
并将其声明为
Numbers one;
//我知道我可以使用STL容器,但我想用数组做这个。
答案 0 :(得分:0)
您不会在input
方法中修改max
,因此shorten
会尝试打印更多实际存在的数字。