简易Vector实现

template <typename Object>
class Vector {
public:
    explicit Vector(int initSize = 0) : theSize(initSize), theCapacity(initSize + SPARE_CAPACITY) {
        objects = new Object[theCapacity];
    }
    Vector(const Vector& rhs) : objects(NULL) {
        operator=(rhs);
    }
    ~Vector() { delete[] objects; }

    void operator= (const Vector& rhs) {
        if (this != &rhs) {
            delete[] objects;
            theSize = rhs.theSize;
            theCapacity = rhs.theCapacity;
            objects = new Object[capacity()];
            for (int i = 0; i < size(); i++)
                objects[i] = rhs[i];
        }
    }

    void reserve(int newCapacity) {
        if (newCapacity > theCapacity) {
            Object* oldArray = objects;
            objects = new Object[newCapacity];
            for (int i = 0; i < size(); i++)
                objects[i] = oldArray[i];
            theCapacity = newCapacity;
            delete[] oldArray;
        }
    }

    Object& operator[](int index) {
        return objects[index];
    }
    const Object& operator[](int index) const {
        return objects[index];
    }

    bool empty() const {
        return size() == 0;
    }
    int size() const {
        return theSize;
    }
    int capacity() const{
        return theCapacity;
    }

    void push_back(const Object& object) {
        if (capacity() == size()) {
            reserve(2 * theCapacity + 1);

        }
        objects[theSize++] = object;
    }

    void pop_back() {
        theSize--;
    }

    const Object& back() const{
        return objects[theSize - 1];
    }

    typedef Object* iterator;
    typedef const Object* const_iterator;

    iterator begin() {return &objects[0];}

    const_iterator begin() const{return &objects[0];}

    iterator end(){return &objects[size()];}

    const_iterator end()  const{return &objects[size()];}


    enum {SPARE_CAPACITY=16};

private:
    int theSize;
    int theCapacity;
    Object* objects;
};

  代码来自 《数据结构与算法分析:C++描述》

原文链接: https://www.cnblogs.com/airfy/p/12588549.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    简易Vector实现

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338398

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午11:35
下一篇 2023年3月1日 下午11:36

相关推荐