参考了这篇博客:C++实现vector

练习模板类,命名空间,重载运算符的根底应用。加了个命名空间和对方括号的重载,使得能够通过索引拜访数据。

#include <iostream>namespace Morpheus {    template<typename T>    class vector {    private:        T* _first;        T* _last;        T* _end;    public:        vector(int size = 5) {            _first = new T[size];            _last = _first;            _end = _first + size;        }        ~vector() {            delete _first;            _first = nullptr;            _last = nullptr;            _end = nullptr;        }        bool isEmpty() {            return _first == _last;        }        bool isFull() {            return _last == _end;        }        int size() {            return _last - _first;        }        void push_back(const T& x) {            if (isFull()) {                expand();            }            *_last++ = x;        }        void pop_back() {            if (!isEmpty()) {                _last--;            }        }        T operator[](const int& i) {            return _first[i];        }    private:        void expand() {            int len = _end - _first;            T* temp = new T[2 * len];            for (int i = 0; i < len; ++i) {                temp[i] = _first[i];            }            delete[] _first;            _first = temp;            _last = _first + len;            _end = _first + 2 * len;        }    };}int main() {    Morpheus::vector<double> v;    v.push_back(1.2);    v.push_back(1.3);    v.push_back(1.4);    for (int i = 0; i < v.size(); ++i) {        std::cout << v[i] << ",";    }    v.pop_back();    v.pop_back();    for (int i = 0; i < v.size(); ++i) {        std::cout << v[i] << ",";    }}