Vector类实现,动态内存下标越界
这是另一个博主的代码,我的疑惑是,如果输入的n超过初始设置的100,add()函数里不会造成下标越界吗
template <class T>
class Vector
{
private:
int pos;
int size = 100;
T* data;
public:
Vector() {
pos = 0;
data = new T[size];
}
int add(T m) {
data[pos]=m;
pos++;
return pos-1;
}
int get_size() { return pos; }
void remove(int m) {
for (int i = m; i < pos-1; i++) {
data[i] = data[i + 1];
}
pos--;
}
const T& operator[](int index)const
{
return data[index];
}
};
————————————————
版权声明:本文为CSDN博主「我不想起名字呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_47867028/article/details/117336559
int main()
{
Vector<int> vint;
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
// add() can inflate the vector automatically
vint.add(i);
}
// get_size() returns the number of elements stored in the vector
cout << vint.get_size() << endl;
cout << vint[m] << endl;
// remove() removes the element at the index which begins from zero
vint.remove(m);
cout << vint.add(-1) << endl;
cout << vint[m] << endl;
Vector<int> vv = vint;
cout << vv[vv.get_size() - 1] << endl;
vv.add(m);
cout << "vint size:" << vint.get_size() << endl;
cout << "vv size:" << vv.get_size() << endl;
cout << vint.get_size() << endl;
}