从零开始制造一个STL之 vector

      STL有现成的,为什么要重新制造呢?为了锻炼自己,看看自己对底层了解到什么程度。话说前头,我可没有去研究过STL的源码,本人实力有限,看那玩意儿太恶心。vector——数组,我最熟悉的容器,在我看来是最容易实现的,所以从它开始。

vec类的声明

template<class type>
class vec
{
public:
	vec();//默认构造函数
	vec(unsigned int size,const type& data);//初始化构造函数
	vec(const vec& copy);//拷贝构造函数
	virtual ~vec();//析构函数
public:
	unsigned int size();//返回vec的元素数量
	void push_back(const type& data);//从vec最后面插入一个新元素
	void pop_back();//将vec最后一个元素删除 并且释放掉它的内存空间

	type& operator[](unsigned int i);//重载[]  然后可以用下标操作vec
	
	
public:
	typedef type* iter;//迭代器
	iter begin()//返回指向首元素的迭代器
	{
		it=_begin;
		return it;
	}
	iter end()//返回指向末尾元素的迭代器
	{
		it=_begin+_size;
		return it;
	}
	iter operator++()//重载++符号 用于操作迭代器
	{
		it=it+1;
	}
private:
	type* _begin;//vec的首地址
	unsigned int _size;//数组元素个数
	iter it;//迭代器	
};
下面是各个接口的实现,顺便提一下为什么很多函数的形参用的是const修饰加变量引用。因为type可能是一个类,变量引用可以避免重新构造一个对象,浪费空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值