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;
- }
-