我基本上需要为 C++ 中的动态整数数组创建一个类,该类具有以下方法:add、get、resize 和 size。这是我到目前为止所拥有的,但我陷入了调整大小方法,并且遇到了一堆错误等。我缺少什么吗?任何帮助,将不胜感激!!预先感谢。
//header file
#pragma once
#ifndef IntVector_h
#define IntVector_h
using namespace std;
class IntVector {
private:
int* intPtr;
int vectSize;
int totElements;
public:
IntVector();
void add(int);
int get(int);
void resize();
int size();
};
#endif
//implementation
#include "IntVector.h"
#include <iostream>
#include <string>
using namespace std;
IntVector::IntVector() {
vectSize = 1;
totElements = 0;
intPtr = new int[vectSize];
}
void IntVector::add(int num) {
if (vectSize == totElements) {
resize();
intPtr[totElements] = num;
totElements++;
}
else {
intPtr[totElements] = num;
totElements++;
}
}
int IntVector::get(int index) {
return intPtr[index];
}
void IntVector::resize() {
vectSize *= 2;
int* newArr = new int[vectSize];
for (int i = 0; i < (vectSize / 2); i++) {
newArr[i] = intPtr[i];
}
delete[] intPtr;
intPtr = newArr;
delete[] newArr;
}
int IntVector::size() {
return totElements;
}
声明
int* newArr = new int[vectSize];
// ...
intPtr = newArr;
delete[] newArr;
错了。
通过赋值
intPtr = newArr
,您仅复制 指针,而不是它指向的内存。因此,在赋值之后,您将有两个指针变量,指向相同的内存。
当您
delete[] newArr
时,您使两个指针都无效。