【C++数据结构】动态数组

来源:互联网 发布:xbox one手柄连mac 编辑:程序博客网 时间:2024/05/18 00:51
DynamicArray.h
#pragma once#include <iostream>using namespace std;template <class T>class CDynamicArray{public:    CDynamicArray();    ~CDynamicArray();private:    int Size = 5;    int Length = 0;    T* array;    const int increase = 5;private:    bool Resize(int number);public:    T& operator [](int num);    void Display(void);};

DynamicArray.cpp

#include "DynamicArray.h"template<class T>CDynamicArray<T>::CDynamicArray(){    array = new T[Size];}template<class T>CDynamicArray<T>::~CDynamicArray(){    delete array;    array = nullptr;}template<class T>bool CDynamicArray<T>::Resize(int number){    if (number < 0) {        return false;    }else if (number < Size) {        return true;    }    while(number >= Size) {        int length = Size;        Size += increase;        T* newArray = new T[Size];        for (int i = 0; i < length; i++) {            newArray[i] = array[i];        }        delete array;        array = nullptr;        array = newArray;        return true;    }    return false;}template<class T>T& CDynamicArray<T>::operator[](int num){    if (num > Length) {        Length = num;    }    if (Resize(num)) {        return array[num];    }}template<class T>void CDynamicArray<T>::Display(void){    for (int i = 0; i < Length + 1; i++) {        cout << array[i] << endl;    }}

mian.cpp

#include "DynamicArray.h"#include "DynamicArray.cpp"void main() {    CDynamicArray<int> arr;    for (int i = 0; i < 13; i++) {        arr[i] = i;    }    arr.Display();    system("pause");}
0 0
原创粉丝点击