C++实现动态顺序表(3)

// 通过下边访问顺序表index位置上的元素
    // 思考为什么要成对的来重载
    DataType& operator[](size_t index)
    {
        assert(index);
        return _array[index];
    }
    const DataType& operator[](size_t index)const
    {
        assert(index);
        return _array[index];
    }
    // 返回顺序表中第一个元素的引用,思考为什么要返回应用,为什么要成对重载
    DataType& Front()
    {
        return _array[0];
    }
    const DataType& Front()const
    {
        return _array[0];

}
    // 返回顺序表中最后一个的元素的引用,思考为什么要返回引用,为什么要成对重载
    DataType& Back()
    {
        return _array[_size - 1];
    }
    const DataType& Back()const
    {
        return _array[_size - 1];
    }
private:
    // 动态扩容-->该函数中有坑,请找出坑在哪?
    void _CheckCapacity()
    {
        // 2*_capacity  有问题?
        if (_size >= _capacity)
        {
            DataType* pTemp = new DataType[_capacity * 2];
            //memcpy(pTemp, _array, _size*sizeof(DataType));
            for (size_t index = 0; index < _size; ++index)
                pTemp[index] = _array[index];
            delete[] _array;
            _array = pTemp;
            _capacity *= 2;
        }
    }
    int Find(const DataType & data)
    {
        assert(_array != NULL);
        for (size_t i = 0; i < _size; i++)
        {
            if (_array[i] == data)
                return i;
        }
        return -1;
    }
private:
    DataType* _array;
    size_t _size;  // 保存有效元素的个数
    size_t _capacity;  // 空间的实际大小
};

#endif //__VECTOR_H__

代码当中的问题及思考提示将在以后探讨。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/101be81210ae251c7a2c9147cc05d6eb.html