Arraylist.h文件
#pragma once
#include<iostream>
using namespace std;
//连续存储的线性结构:用数组表示
#define defaultSize 100
template<class T>
class ArrayList {
//typedef ArrayList<T> _Ty;
private:
int _maxSize; //所能存入的最大数目
T* _pArr; //保存首地址的指针
int _current; //目前保存的元素数目(从1开始)
protected:
//初始化函数
void init(int msz);
//初始化函数,参数为ArrayList<T>类型
void init(ArrayList<T>& arr);
public:
//构造函数,为_pArr分配内存
ArrayList(int msz = defaultSize);
//复制构造函数
ArrayList(ArrayList<T>& arrlst);
//赋值函数
ArrayList<T>& operator =(ArrayList<T>& arr);
//析构函数
~ArrayList();
增加容量的函数,increment是增加的量
void addCapacity(int increment);
//输入输出函数
void input();
void output()const;
//追加与插入的函数
bool append(const T item);
bool insert(int pos, const T item);
//删除函数
bool remove(int pos, T& item);
//销毁整个数组的函数
void destroy();
//从新设置maxSize的函数
void reSize(int resz);
//取出特定位置元素并返回
T getItem(int pos);
//判断空否
bool isEmpty() const{ return(_current == 0) ? true : false; };
//判断满否
bool isFull() const{ return(_maxSize == _current) ? true : false; };
//排序函数,参数为true表示升序,false表示降序
void sort(bool asc = true);
//获取最大容量
int getMaxSize() { return _maxSize; }
//获取目前元素数量
int getCurrentSize() { return _current; }
};
template<class T>
ArrayList<T>::ArrayList(int msz /*= defaultSize*/) {
//调用初始化函数void init(int msz);
init(msz);
}
//复制构造函数
template<class T>
ArrayList<T>::ArrayList(ArrayList<T>& arr) {
//调用初始化函数void init(_Ty& arr);
init(arr);
}
//初始化函数,用整形变量初始化
template<class T>
void ArrayList<T>::init(int msz) {
//如果参数小于0,则报错