【C++基础】 MyArray 自己实现动态数组 类模板
admin
2024-03-23 20:16:59
  • TestArray

    #include
    #include"Array.h"
    using namespace std;
    ​
    int main()
    {char str[2];str[0] = 'z';str[1] = 'y';Arrayob(str, 2);
    ​cout << "Test =:" << endl;Arraycopy_ob = ob;cout << copy_ob << endl;
    ​cout << "Test <<:" << endl;cout << ob << endl;
    ​cout << "Test getsize():" << endl;cout << ob.getSize() << endl;
    ​cout << "Test +:" << endl;Arraydouble_ob;cout << ob + copy_ob << endl;
    ​cout << "Test []:" << endl;cout << ob[1] << endl;
    ​cout << "Test sort:" << endl;ob.sort();cout << ob << endl;
    }
  • Array

    #include 
    using namespace std;
    ​
    //目的:存不同类型的数据
    template 
    class Array {
    private:int size;//数据个数T* arr;//数据容器
    public:int getSize();Array();  //  Array(int size);Array(const Array& other);Array(T[], int n);~Array();
    ​Array& operator=(const Array& rhs);Array operator+(const Array& rhs) const; // appendT& operator[](int i); //allow read and writeconst T& operator[](int n) const; // readonly    operator T* (); // 将动态数组对象转换为类型T *friend ostream& operator << (ostream& out, const Array& rhs);
    ​void sort();
    };
    ​
    template
    int Array::getSize()
    {return size;
    }
    ​
    template
    Array::Array()
    {size = 0;arr = nullptr;
    }
    ​
    template
    Array::Array(int _size)
    {size = _size;arr = new T[size + 1];
    }
    ​
    template
    Array::Array(const Array& other)
    {if (size != other.size){delete[]arr;size = other.size;arr = new T[size+1];}for (int i = 0; i < size; i++){arr[i] = other.arr[i];}
    }
    ​
    template
    Array::Array(T a[], int n)
    {size = n;arr = new T[size + 1];for (int i = 0; i < size; i++){arr[i] = a[i];}arr[size] = '\0';
    }
    ​
    template
    Array::~Array()
    {if (arr){delete[]arr;arr = nullptr;}
    }
    ​
    template
    Array& Array::operator=(const Array& rhs)
    {if (size != rhs.size){delete[]arr;size = rhs.size;arr = new T[size + 1];}for (int i = 0; i < size; i++){arr[i] = rhs[i];}return *this;
    }
    ​
    template
    Array Array::operator+(const Array& rhs) const
    {int i = 0;Array temp;temp.size = size + rhs.size;temp.arr = new T[temp.size + 1];for (i = 0; i < size; i++){temp.arr[i] = arr[i];}for(i=0;i
    T& Array::operator[](int i)
    {return arr[i];
    }
    ​
    template
    const T& Array::operator[](int n) const
    {return arr[n];
    }
    ​
    template
    Array::operator T* ()
    {return arr;
    }
    ​
    template
    ostream& operator <<(ostream& out, const Array& rhs)
    {for (int i = 0; i < rhs.size; i++){out << rhs.arr[i]<<" ";}out << endl;return out;
    }
    ​
    template
    void Array::sort()
    {for (int i = 0; i < size; i++){for (int j = i + 1; j < size; j++){if (arr[i] > arr[j]){T t  = arr[i];arr[i] = arr[j];arr[j] = t;}}}
    }

相关内容

热门资讯

庐山买花指南:本地人告诉你哪里... 庐山买花指南:本地人告诉你哪里能找到价格实惠的鲜花批发市场 来庐山游玩,想买些鲜花装点住处,或是带一...
春游江淮 | 八公山国家地质公... 八公山国家地质公园 温馨提示 春假及清明假期游玩 春假及清明假期期间(4月1日至6日)游客量较大,为...
原创 迪... 在迪士尼的梦幻国度里,每一件婚纱都承载着童话故事的浪漫与神秘。而今,随着新角色小精灵的加入,梦幻婚纱...
鹰潭市区逛吃指南:下山早的悠闲... 鹰潭市区逛吃指南:下山早的悠闲时光,本地人带你这样玩 很多来鹰潭的朋友,主要行程都安排给了龙虎山,这...
从峡谷到草甸:一份沉浸式秦岭垂... 从峡谷到草甸:一份沉浸式秦岭垂直生态带考察攻略,在商洛读懂“一山有四季” 你好,我是商洛本地的一名旅...