#include<iostream>
#include<stack>
using namespace std;
template<typename _Ty> //模板使得开辟的空间由传入的值类型决定
class Vector
{
public:
typedef _Ty value_type; //首先呢我们定义一下值类型
public:
Vector()//构造函数
{
parr = new _Ty[2]();
cursize = 0;
totalsize = 2;
}
~Vector()//析构函数
{
delete[] parr;
parr = NULL;
}
void push_back(const value_type& val)//熟悉Vector容器都知道这是Vector的成员方法
{
insert(cursize, val);调用插入函数
}
void insert(int pos, const value_type& val)//插入函数
{
if (pos < 0 || pos > cursize)
{
throw std::exception("pos is error!");
}
if (full())//判满
{
resize();//扩容
}
int index = cursize;
for (index; index > pos; index--)
{
parr[index] = parr[index - 1];
}
parr[pos] = val;
cursize++;
}//起到拷贝构造的作用
bool empty()判空
{
return cursize == 0;
}
void pop_back()尾删
{
erase(cursize - 1);
}
void erase(int pos) //Vector的erase(删除)方法
{
if (pos < 0 || pos >= cursize)
{
throw std::exception("pos is error!");
}
if (empty())
{
throw std::exception("vector is empty!");
}
int index = pos;
for (index; index < cursize - 1; index++)
{
parr[index] = parr[index + 1];
}
cursize--;
}
_Ty back()
{
if (empty())判空
{
throw std::exception("vector is empty!");
}
return parr[cursize - 1];
}
void show()打印函数
{
int index = 0;
for (index; index < cursize; index++)
{
std::cout << parr[index] << " ";
}
std::cout << std::endl;
}
private:
void resize()扩容函数
{
_Ty* pnewarr = new _Ty[totalsize * 2]();
memcpy(pnewarr, parr, sizeof(_Ty)*totalsize);
delete[] parr;
parr = pnewarr;
totalsize *= 2;
}
bool full()判满
{
return cursize == totalsize;
}
_Ty* parr;
int cursize;//
int totalsize;
};
int main()
{
return 0;
}