容器适配器-实现vector

#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)
	{
		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)
	{
		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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值