C++:数组类模板

数组类模板

  • 静态数组是具有固定元素个数的群体,其中的元素可以通过下标直接访问。

    • 缺点:大小在编译时就已经确定,在运行时无法修改。
  • 动态数组由一系列位置连续的,任意数量相同类型的元素组成。

    • 优点:其元素个数可在程序运行时改变。
  • vector就是用类模板实现的动态数组。

#ifndef ARRAY_H
#define ARRAY_H
#include <cassert>

template <class T>  //数组类模板定义
class Array
{
private:
	T* list;        //用于存放动态分配的数组内存首地址
	int size;       //数组大小(元素个数)
public:
	Array(int sz = 50);     //构造函数
	Array(const Array<T> &a);   //复制构造函数
	~Array();           //析构函数
	Array<T> & operator = (const Array<T> &rhs);    //重载"=“
	T & operator [] (int i); //重载"[]”
	const T & operator [] (int i) const;     //重载"[]”常函数
	operator T * ();        //重载到T*类型的转换
	operator const T * () const;
	int getSize() const;        //取数组的大小
	void resize(int sz);        //修改数组的大小
};

template <class T> Array<T>::Array(int sz)  //构造函数
{
	assert(sz >= 0);//sz为数组大小(元素个数),应当非负
	size = sz;  // 将元素个数赋值给变量size
	list = new T[size];    //动态分配size个T类型的元素空间
}

template <class T> Array<T>::~Array()  //析构函数
{
	delete[] list;
}

template <class T>
Array<T>::Array(const Array<T> &a) //复制构造函数
{    
	size = a.size;     //从对象x取得数组大小,并赋值给当前对象的成员
	list = new T[size]; // 动态分配n个T类型的元素空间
	for (int i = 0; i < size; i++)     //从对象X复制数组元素到本对象 
		list[i] = a.list[i];
}
#endif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值